Está en la página 1de 181

Una Introduccin al Dise o Digital de o n Computadoras

Jorge L. Ortega Arjona Departamento de Matemticas a Facultad de Ciencias, UNAM Mayo 2006

Indice general
1. Introduccin o 1.1. La computadora y las cosas que se pueden hacer con ella . . . 1.2. Ideas bsicas sobre computadoras digitales componentes de a una computadora digital . . . . . . . . . . . . . . . . . . . . . 1.3. Construccin de computadoras microprocesadores . . . . . o 9 10 12 15

2. Sistemas numricos e 19 2.1. Ideas bsicas de los sistemas numricos . . . . . . . . . . . . . 19 a e 2.2. Cambiando de una base a otra . . . . . . . . . . . . . . . . . 25 2.3. Algo de aritmtica binaria elemental . . . . . . . . . . . . . . 31 e 3. Elementos bsicos de una computadora a 3.1. Notacin lgica . . . . . . . . . . . . . . . o o 3.2. Compuertas . . . . . . . . . . . . . . . . . 3.2.1. La compuerta AND . . . . . . . . 3.2.2. La compuerta OR . . . . . . . . . 3.2.3. La compuerta NOT . . . . . . . . 3.2.4. La compuerta NOR . . . . . . . . 3.2.5. La compuerta NAND . . . . . . . 3.2.6. La compuerta XOR . . . . . . . . 3.3. Interconexin de compuertas para obtener o 3.4. El sumador . . . . . . . . . . . . . . . . . 3.5. El multiplexor . . . . . . . . . . . . . . . . 3.6. Flip-ops . . . . . . . . . . . . . . . . . . 3.6.1. El ip-op RS . . . . . . . . . . . 3.6.2. El ip-op D . . . . . . . . . . . . 3.6.3. El ip-op JK . . . . . . . . . . . 3.6.4. El ip-op T . . . . . . . . . . . . 3.6.5. Entradas de inicializacin . . . . . o 3 37 37 40 40 42 44 45 46 47 48 54 58 61 62 66 67 69 69

. . . . . . . . . . . . . . . . . . . . . . . . otras . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . compuertas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

3.7. Seales de reloj . . . . . . . . . . . . . . . . . . . . n 3.8. Registros . . . . . . . . . . . . . . . . . . . . . . . 3.8.1. El registro de corrimiento . . . . . . . . . . 3.9. Contadores . . . . . . . . . . . . . . . . . . . . . . 3.10. Detectores de secuencia y generadores de secuencia

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

. . . . .

70 72 73 79 81 85 86 93 94 96 97 97 98 98 102 104 105 106 108

4. Memorias 4.1. Memorias de acceso aleatorio RAM . . . . . . . . . 4.2. Memorias de solo lectura ROM . . . . . . . . . . . 4.2.1. Estructura de la ROM bsica . . . . . . . . . a 4.2.2. ROM programable PROM . . . . . . . . . . 4.2.3. PROMs borrables EEPROM y UVEPROM 4.3. Paralelizacin de dispositivos de memoria . . . . . . o 4.3.1. La terminal Chip Select (CS) . . . . . . . . . 4.3.2. La terminal Output Enable (OE) . . . . . . . 4.4. Cintas y discos . . . . . . . . . . . . . . . . . . . . . 4.4.1. Cintas . . . . . . . . . . . . . . . . . . . . . . 4.4.2. Discos . . . . . . . . . . . . . . . . . . . . . . 4.5. Cdigos . . . . . . . . . . . . . . . . . . . . . . . . . o 4.5.1. Cdigos de deteccin de errores . . . . . . . . o o 5. El cmputo digital bsico o a 5.1. La unidad aritmtica bsica . . . . . . . e a 5.2. Aritmtica modular . . . . . . . . . . . e 5.3. Aritmtica de complemento a 2 . . . . . e 5.3.1. Complemento a 2 . . . . . . . . . 5.3.2. Uso del Complemento a 2 para la 5.4. Multiplicacin y divisin . . . . . . . . . o o 5.5. Nmeros de punto otante . . . . . . . . u 5.5.1. Suma y resta . . . . . . . . . . . 5.5.2. Multiplicacin y divisin . . . . . o o 5.6. La unidad lgica-aritmtica (ALU) . . . o e 5.6.1. Adicin e incremento . . . . . . . o 5.6.2. Limpieza (CLEAR) . . . . . . . 5.6.3. AND lgica . . . . . . . . . . . . o 5.6.4. OR lgica . . . . . . . . . . . . . o 5.6.5. XOR lgica . . . . . . . . . . . . o 5.6.6. Corrimiento a la derecha . . . . . 5.6.7. Corrimiento a la izquierda . . . . 5.6.8. Complemento . . . . . . . . . . . 4

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . substraccin o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . .

109 . 109 . 113 . 117 . 120 . 122 . 123 . 126 . 130 . 130 . 132 . 133 . 135 . 136 . 137 . 137 . 138 . 139 . 139

5.6.9. Conexin de entradas . . . . . . . . . . . . . . . . . . 139 o 5.6.10. Inspeccin de salidas . . . . . . . . . . . . . . . . . . . 140 o 5.6.11. Conexin de salidas . . . . . . . . . . . . . . . . . . . 142 o 6. La computadora digital 6.1. Organizacin de una computadora digital . . . . . . . . o 6.1.1. Buses . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Instrucciones de memoria transmisin de informacin o o 6.2.1. Estructura de la palabra . . . . . . . . . . . . . . 6.3. Ejecucin de instrucciones . . . . . . . . . . . . . . . . . o 6.4. La computadora digital completa . . . . . . . . . . . . . 6.5. Programacin en lenguaje de mquina . . . . . . . . . . o a 6.5.1. Programas simples . . . . . . . . . . . . . . . . . 6.5.2. Salida de datos . . . . . . . . . . . . . . . . . . . 6.6. Lenguaje ensamblador . . . . . . . . . . . . . . . . . . . 6.7. Lenguajes de alto nivel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 143 146 147 148 150 156 160 162 168 173 179

Prefacio
Estas notas describen cmo funcionan las computadoras. Estn escrio a tas para personas que usan pequeas computadoras, pretenden usarlas, o n que simplemente estn interesadas en general por ellas. Comenzando con las a compuertas ms elementales y construyendo hacia una computadora coma pleta, se discuten todas las fases de desarrollo de computadoras. Tambin e se presenta y discute el sistema numrico binario y la forma en que una e computadora funciona con tales nmeros. u Adems de describir las partes de una computadora, se discute la proa gramacin elemental en lenguaje de mquina, y se habla de lenguajes eno a samblador y de alto nivel. El objetivo de estas notas, sin embargo, no es la enseanza de lenguajes espec n cos, sino proveer de un entendimiento de qu lenguajes hay y cmo operan con la computadora. Aun cuando estas e o notas son para el lector individual, pueden usarse tambin como textos para e un curso bsico de arquitectura de computadoras. a Jorge L. Ortega Arjona Mayo 2006

Cap tulo 1

Introduccin o
La computadora digital moderna era originalmente un dispositivo grande, tanto que requer una gran habitacin para contenerla. Adems, era a o a cara, costando comnmente ms de un milln de dlares. Debido a su tau a o o mao y costo, las primeras computadoras pertenec slo a grandes comn an o pa y universidades, y se utilizaban principalmente para operaciones de nas procesamiento de datos. Los desarrollos tecnolgicos permitieron que cada vez un nmero mayor o u de personas hicieran uso de las computadoras. Sin embargo, tal nmero de u personas era muy limitado. Las computadoras se usaban generalmente para resolver problemas matemticos complejos de ingenier o ciencia, o tambin a a e para realizar nminas y otras operaciones de procesamiento de datos de o grandes compa nas. Las computadoras digitales originales utilizaban tubos al vac o bulbos. o La introduccin del transistor permiti el desarrollo de poderosas compuo o tadoras que eran f sicamente ms pequeas y ms conables. Sin embargo, a n a esta computadoras eran todav grandes y costosas. El desarrollo de los cira cuitos integrados cambi todo eso. Muchos transistores y circuiter asociada o a pueden construirse en un peque nsimo circuito de silicio. El costo y tamao n de un circuito complejo lleg a ser similar a aqul que utilizaba transistores o e solo unos aos antes. Los circuitos integrados de alta escala han llevado esto n un paso ms adelante. Actualmente, circuitos de computadora extremadaa mente complejos pueden construirse en un fragmento de silicio. Esto ha dado como resultado computadoras pequeas y relativamente baratas. n

Una computadora hoy est disponible para un mayor nmero de persoa u nas, y con diversos usos. Se utilizan, por ejemplo, desde el control de inyeccin de combustible de los automviles, hasta la direccin de operaciones o o o de casi todas las compa nas. Se utilizan tambin en todo tipo de instrue mentos para proveer de informacin inmediata que antes no era disponible. o A nivel personal, se usan para controlar las nanzas, jugar, y hacer otras operaciones, que se limitan tan solo por la imaginacin del usuario. o En estas notas se discute cmo funciona una computadora digital. Adems o a de presentar estas ideas bsicas, tambin se mencionan algunas caracter a e sticas generales de computadoras disponibles, as como de los componentes que las constituyen.

1.1.

La computadora y las cosas que se pueden hacer con ella

Considrese una computadora en operacin. Un ingeniero electrnico, e o o por ejemplo, le suministra las especicaciones de un amplicador de audio de alta delidad, y en segundos, la computadora imprime los componentes del amplicador. O tmese al usuario que juega ajedrez con su computadora. o Para toda movida que hace, la computadora responde con un movimiento. Tal proceso contina hasta que el juego termina, muchas veces ganando la u computadora. En otro caso an, el gerente de un departamento de crdito u e le proporciona una lista de nmeros de cuenta de clientes, as como sus u compras y pagos del mes. La computadora se encarga entonces de enviar a cada cliente su estado de cuentas y cobros, basndose en sus compras y a pagos, el balance anterior y los cargos por servicios. En todos estos ejemplos parece como si la computadora acepta datos, piensa y produce una salida. En realidad, un proceso algo diferente toma lugar. La computadora no piensa. Debe ser programada, es decir, debe ser dirigida para realizar un conjunto espec co de operaciones. En todos los ejemplos anteriores, tal programa (o secuencia de instrucciones) ha sido almacenado previamente en la computadora. Las computadoras actuales pueden almacenar una gran cantidad de informacin. Tal informacin consiste tanto de programas que pueden ejeo o cutarse, como de datos sobre los cuales se ejecutan los programas. En el ejemplo del departamento de crdito, los datos almacenados pueden ser el e nmero de cuenta, nombre, balance de crdito, cargo por servicio, pagos y u e 10

compras. Adems, tambin es necesario tener almacenado un conjunto de a e instrucciones (o programa) que dirige la accin de la computadora, a n de, o por ejemplo, imprimir los recibos y estados de cuenta. El programa puede dirigir a la computadora para realizar, paso a paso, complejas operaciones, usando tan solo operaciones aritmticas bsicas (sue a ma, resta, multiplicacin y divisin) y algunos otros relativamente simples o o procedimientos. Por ejemplo, dos nmeros pueden compararse y la compuu tadora puede determinar si son iguales, o si uno es mayor que el otro. Usando procedimientos sencillos, una computadora puede hacer que se realicen operaciones complejas, produciendo la apariencia de que algn proceso de u pensamiento se lleva a cabo. Por ejemplo, si el balance de pago de un cliente excede una cierta cantidad, se puede aadir un mensaje de advertencia para n el cliente. Aun cuando en estas notas se busca explicar cmo funciona una compuo tadora, por otro lado no se discute en detalle cmo puede ser programada. o Para esto, se sugiere al lector referirse a alguno de los tantos libros sobre programacin disponibles. o La introduccin tecnolgica del microprocesador ha permitido reducir o o el tamao, y en la actualidad, el costo de las computadoras, que pueden n ser adquiridas por personas individuales para utilizarlas en su trabajo o entretenimiento. Estas computadoras personales (o PCs, por sus siglas en ingls) pueden utilizarse para jugar una variedad de juegos como el ajedrez, e o algn otro que haga al usuario imaginar que viaja por el espacio o explora u cavernas y laberintos. El propietario de una computadora personal puede usarla tal y como una gran compa utiliza una computadora grande para, por ejemplo, llena var control de sus nanzas domsticas, impuestos y presupuestos. Llevado en e ocasiones al extremo, la computadora puede utilizarse para controlar varias otras actividades en el hogar. Por ejemplo, la calefaccin puede controlarse, o de tal modo que se logren ahorros en el consumo de energ Una compua. tadora puede automticamente leer informacin de sensores, a n de que a o las alarmas contra incendio o ladrones se hagan ms sensibles: la ms pea a quea aparicin de luz en una habitacin obscura durante la noche puede n o o automticamente disparar una alarma. a Muchas de las aplicaciones de la computadora se encuentran en las reas a de ingenier ciencia y matemticas, donde es frecuente la necesidad de rea, a 11

solver conjuntos de ecuaciones simultneas con muchas incgnitas. Si esto se a o hiciera a mano (o con una simple calculadora), la solucin requerir horas, o a o hasta d Dependiendo de la complejidad del clculo, la computadora as. a puede realizarlo en minutos, o tal vez, hasta en segundos. Hay, por supuesto, muchas otras aplicaciones de esta naturaleza. Cuando ondas de radar rebotaron en la supercie de Venus, la seal de retorno era tan dbil que no n e pod distinguirse del ruido o la interferencia. Las computadoras se utilizaa ron entonces para realizar complejos clculos, que permitieron distinguir las a seales del ruido. Tambin, las computadoras se utilizan mpliamente en los n e a negocios a n de llevar a cabo labores contables, como inventarios, balances y operaciones diarias de env y recepcin de mercanc o o as. Se han mencionado algunos usos de la computadora personal. Es posible que entender la operacin de este tipo de computadoras pueda expresar o ms claramente sus capacidades y limitaciones, de tal modo que se puedan a descubrir nuevos usos. Tal entendimiento es el objetivo de estas notas.

1.2.

Ideas bsicas sobre computadoras digitales a componentes de una computadora digital

Las computadoras digitales operan sobre nmeros. A veces, estos nmeu u ros son cdigos que representan instrucciones de un programa, o datos tales o como el nombre de una persona. Por ejemplo, si se introduce el nombre de una persona a la computadora, debe convertirse primero en un conjunto de cdigos numricos apropiados. Ms an, los nmeros pueden representar o e a u u tambin nmeros verdaderos. e u Si el objetivo es entender cmo funciona una computadora, es necesario o conocer su sistema numrico. En general, los seres humanos trabajamos con e un sistema numrico decimal que utiliza diez d e gitos. Se considera que este sistema se desarroll debido a que las personas normalmente cuentan con o diez dedos. Sin embargo, las computadoras son esencialmente un conjutno de interruptores que se encuentran en uno de dos estados: encendido (on) o apagado (o). As los componentes de una computadora trabajan con un , sistema numrico de dos d e gitos, llamado sistema numrico binario, el cual e usa 0 y 1 para representar los estados de apagado y encendido respectivamente. Considrese ahora cmo es la organizacin interna de una computadora e o o digital. En los cap tulos subsecuentes, las ideas a continuacin se presentan o 12

con mayor detalle. Sin embargo, parece necesario aclarar que la terminolog a usada para describir la organizacin interna de una computadora digital no o est completamente estandarizada, de tal modo que la descripcin aqu utilia o za terminolog comn utilizada para computadoras pequeas. Por lo tanto, a u n una computadora digital puede describirse como un diagrama de bloques (Figura 1.1). A continuacin, se describe brevemente cada uno de sus como ponentes genricos. e

Unidad de Control

Dispositivos de Entrada y Salida

Memoria

Unidad Logico Aritmetica

Unidad Central de Proceso

Figura 1.1: Unidades bsicas de una computadora digital. a

Unidad Lgico Aritmtica o e La Unidad Lgico Aritmtica (o ALU, por sus siglas en ingls) se eno e e carga de realizar todas las operaciones lgicas y aritmticas denidas sobre o e los valores numricos binarios. Por ejemplo, dos nmeros binarios pueden e u sumarse para producir un tercero. Unidad de Control La Unidad de Control (o CU, por sus siglas en ingls) dirige la operacin e o de la computadora. Es el elemento que se encarga de controlar el ujo de instrucciones que la computadora va llevando a cabo. Por ejemplo, puede dar las instrucciones a la ALU para la suma de los dos nmeros binarios. u 13

Unidad Central de Proceso Normalmente, la ALU y la CU se conjuntan en un circuito unico lla mando Unidad Central de Proceso (o CPU, por sus siglas en ingls). Sin e embargo, tal terminolog no es completamente estndar, ya que en algunas a a computadoras ambas unidades aparecen como elementos independientes de una computadora.

Memoria Todos los datos y los programas cuyas instrucciones los modican se encuentran almacenados en la memoria de la computadora digital. En realidad, en una computadora digital, existen varios tipos de unidades de memoria. Por ejemplo, la Unidad Principal de Memoria (o MMU, por sus siglas en ingls) es el almacenamiento principal y de trabajo de una computadora. Es e en ella donde se encuentran los datos, as como las instrucciones de los pro gramas que se ejecutan sobre tales datos. Normalmente, en computadoras modernas la memoria principal consiste de circuitos semiconductores. Un tipo particular de memoria semiconductora es la Memoria de Slo o Lectura (o ROM, por sus siglas en ingls). Este tipo de memoria contiene e datos permanentemente almacenados, como por ejemplo, podr ser una a tabla de valores de funciones trigonomtricas. Tales datos generalmente, e aunque no siempre, se incorporan a la memoria durante su manufactura. Otro tipo particular de memoria semiconductora, pero con mayor versatilidad en su uso durante la ejecucin de instrucciones, es la Memoria de o Acceso Aleatorio (o RAM, por sus siglas en ingls). Esta memoria es capaz e de modiar su estado mientras permanezca encendida, permitiendo tanto la lectura como la escritura de valores numricos binarios al ejecutar las e instrucciones de un programa. Adems de la memoria principal, una computadora digital cuenta tama bin con Unidades de Memoria Auxiliares. Tales memorias son capaces de e almacenar una gran cantidad de informacin en componentes magnticos, o e como son discos o cintas. Las memorias auxiliares se consideran de bajo costo en el sentido de que permiten almacenar una gran cantidad de datos a un costo razonable. Sin embargo, las operaciones para escribir y leer informacin de este tipo de memoria toman mucho ms tiempo comparado con o a el tiempo de acceso de la memoria principal semiconductora. 14

Dispositivos de Entrada/Salida Una computadora ser intil a menos que pudieran comunicarse con a u el usuario, a n de que ste proporcionase informacin a ser procesada y e o recibiese los resultados de tal procesamiento. Esta es la funcin de los Diso positivos de Entrada/Salida (o I/O, por sus siglas en ingls). Un dispositivo e de salida t pico es el monitor de una computadora personal, mientras que un dispositivo de entrada t pico es el teclado de la misma. El usuario teclea los s mbolos sobre el teclado, que genera las seales elctricas, en forma de n e ceros y unos, para introducirlas a la computadora. De forma similar, otras seales elctricas se env de la computadora al monitor, de tal modo que n e an ste muestra la informacin que el usuario teclea. e o Otra forma de dispositivo de salida es la impresora, que puede imprimir la informacin de la computadora en una hoja de papel, a n de que pueda o ser examinada por el usuario. Existe un gran nmero de tipos de impresoras, u que operan a diferentes velocidades y resoluciones, permitiendo que grandes cantidades de datos puedan ser analizados.

1.3.

Construccin de computadoras microproceo sadores

Los circuitos electrnicos digitales dentro de la Unidad Central de Proo ceso y la memoria principal se componen de interruptores, que pueden encontrarse encendidos o apagados. Las primeras computadoras realmente utilizaban interruptores controlados elctricamente, llamados relevadores. Los e relevadores ten dos desventajas: eran relativamente lentos, y ocupaban an mucho espacio. Eran necesarios varios milisegundos para que un relevador cambiara su estado de abierto a cerrado. Al principio, tal velocidad puede parecer muy rpida. Sin embargo, durante la ejecucin de un programa de a o computadora comn, se requiere abrir y cerrar los relevadores varios miles u de millones por segundo, a n de obtener una respuesta en un tiempo aceptable para el usuario. De tal modo, una computadora basada en relevadores requer mucho tiempo para operar. Adems, ya que los relevadores ocupan a a un espacio relativamente grande, las computadoras basadas en relevadores tambin tend a ser grandes. e an A mediados de la dcada de 1940, los relevadores fueron reemplazados e por tubos al vac o bulbos, los cuales operaban como interruptores elctrio e cos controlados por electricidad. Tales bulbos eran ms pequeos y rpidos a n a 15

que los relevadores. De hecho, un bulbo rpido puede operar en el orden de a microsegundos (s = 106 segundos). As la velocidad de las computadoras , se increment grandemente. Sin embargo, los bulbos tienen una gran deso ventaja: se funden y deben ser cambiados con mucha frecuencia. Y dado que una computadora de bulbos ten un gran nmero de stos, la posibilidad a u e de la falla de un bulbo durante la operacin, y la falla subsecuente de toda o la computadora, era muy alta. Durante los aos 1950s y 1960s, se desarrollaron las computadoras que n usaban transistores en lugar de bulbos. Los transistores son mucho ms a pequeos que los bulbos, pueden operar a una velocidad en el orden de n nanosegundos (ns = 109 segundos), y no se funden. Con estos dispositivos, la computadora digital ha llegado a velocidades lo sucientemente razonables como para operar sobre programas cada vez ms complejos y largos. Ms a a aun, ya que varios programas cortos pod ejecutarse muy rpido, se an a desarroll el uso prctico de tiempo compartido (time sharing), en el cual o a muchos usuarios aparentan utilizar la computadora simultneamente. En a realidad, en una computadora con tiempo compartido, solo una persona realmente utiliza la computadora en un momento dado. Sin embargo, la computadora se reparte su tiempo tan rpido entre los usuarios que ninguno a de ellos nota diferencia alguna. El desarrollo de los circuitos integrados redujo todav ms el tamao a a n de las computadoras, a un costo mucho ms bajo. Tales circuitos integrados a son dispositivos semiconductores en los cuales, mediante tcnicas pticas, e o muchos miles de transistores se fabrican en una oblea de silicio. Los circuitos integrados son componentes que no requieren alambrarse a mano, como era el caso de los bulbos o los transistores. Consecuentemente, el costo y mano de obra para producir una computadora digital descendieron, y la fabricacin o de computadoras cada vez ms rpidas y baratas es hoy una realidad. a a El primer circuito integrado ten solo unos cuantos componentes como a transistores y resistencias. Debido a esto, a este tipo de circuito se le conoce hoy en d como circuito SSI (Small Scale of Integration). Poco tiempo a despus, se produjeron otros circuitos con un nmero de 50 a 100 compoe u nentes, llamados MSI (Medium Scale of Integration). La fabricacin de miles o de componentes en un solo circuito integrado dio lugar a los sistemas LSI (Large Scale of Integration), lo cual represent un gran paso en el desarrollo o de la computacin electrnica. Finalmente, se han desarrollado a ultimas feo o chas los circuitos integrados VLSI (Very Large Scale of Integration), donde decenas o cientos de miles de componentes en un solo circuito los hace lo 16

sucientemente poderosos como para contener un sistema de cmputo. De o hecho, el microprocesador es un ejemplo de un circuito VLSI que representa una computadora en un solo circuito integrado, realmente constituido por una Unidad de Control, una Unidad Lgico-Aritmtica y algunos registros. o e

17

18

Cap tulo 2

Sistemas numricos e
En el cap tulo anterior se menciona que las computadoras digitales trabajan con un sistema numrico binario que utiliza los d e gitos 0 y 1. En este cap tulo se discuten las ideas bsicas de tal sistema numrico. Adems, se a e a mencionan otros dos sistemas numricos que realmente no se utilizan por las e computadoras digitales, pero que son extremadamente convenientes para el uso de las personas que trabajan con ellas.

2.1.

Ideas bsicas de los sistemas numricos a e

El sistema numrico ms familiar para los seres humanos es el sistema e a decimal, que utiliza 10 s mbolos o d gitos. Sin embargo, los sistema numricos e pueden formarse de cualquier nmero de s u mbolos, siempre y cuando tal nmero sea mayor que uno. El nmero de s u u mbolos que un sistema numrico e utiliza se conoce como base del sistema. En el presente cap tulo, se consideran (a) el sistema binario o base 2, (b) el sistema octal o base 8 y (c) el sistema hexadecimal o base 16. Para comenzar la discusin, considrese la siguiente tabla, que compara o e parte de los sistemas numricos de inters. Ntese que el sistema hexadecimal e e o requiere de 16 s mbolos, por lo que por convencin se utilizan las letras A, o B, C, D, E y F para representar los d gitos de los valores decimales 10, 11, 12, 13, 14 y 15, respectivamente. La tabla muestra los valores numricos de e cada base entre 0 y 20 decimal. 19

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

Binario 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100

Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24

Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14

Para saber qu valor representa un nmero, es necesario primero conocer e u su base. Para especicar la base se hace uso de un sub ndice. Por ejemplo, de la tabla anterior, se tiene que: 1210 = 11002 = 148 = C16 Ntese que el sub o ndice siempre se escribe en base 10. Comnmente, u cuando se conoce la base que se utiliza, normalmente el sub ndice puede omitirse. Se discute a continuacin algunas ideas bsicas sobre los sistemas numrio a e cos. Se comienza con la base 10, que es la ms conocida, para tratar despus a e las otras bases. Tambin, se inicia con nmeros enteros, ya que posteriore u mente se tratan los nmeros fraccionarios. u

20

Considrese el nmero 29310 . Es sencillo notar que este nmero decimal e u u se encuentra compuesto por: 2 centenas + 9 decenas + 3 unidades Es posible expresar esto en forma ms compacta utilizando las siguientes a equivalencias: 100 = 1 101 = 10 102 = 10 10 = 100 103 = 10 10 10 = 1000 104 = 10 10 10 10 = 10000 Por tanto, se puede escribir: 29310 = (2 102 ) + (9 101 ) + (3 100 ) lo que signica que 29310 representa 2 centenas, 9 decenas y 3 unidades. De manera similar: 3286410 = (3 104 ) + (2 103 ) + (8 102 ) + (6 101 ) + (4 100 ) o 3 decenas de millar, 2 millares, 8 centenas, 6 decenas y 4 unidades. En cuanto al sistema numrico binario, y basndose en las mismas ideas e a excepto que la base es 2, se tiene que: 20 = 1 21 = 2 22 = 2 2 = 4 23 = 2 2 2 = 8 24 = 2 2 2 2 = 16 25 = 2 2 2 2 2 = 32 26 = 2 2 2 2 2 2 = 64

21

Por lo tanto, se puede escribir que: 1012 = (1 22 ) + (0 21 ) + (1 20 ) Similarmente, se tiene que: 1101012 = (1 25 ) + (1 24 ) + (0 23 ) + (1 22 ) + (0 21 ) + (1 20 ) = 5310 En cuanto a los sistemas octal y hexadecimal, las ideas son muy similares. Utilizando las siguientes equivalencias: 80 = 1 81 = 8 82 = 8 8 = 64 83 = 8 8 8 = 512 84 = 8 8 8 8 = 4096 85 = 8 8 8 8 8 = 32768

160 = 1 161 = 16 162 = 16 16 = 256 163 = 16 16 16 = 4096 164 = 16 16 16 16 = 65536

Se tiene, por ejemplo, que: 7318 = (7 82 ) + (3 81 ) + (1 80 ) = 47310 41328 = (4 83 ) + (1 82 ) + (3 81 ) + (2 80 ) = 213810 1E216 = (1 162 ) + (14 161 ) + (2 160 ) = 48210 263A16 = (2 163 ) + (6 162 ) + (3 161 ) + (10 160 ) = 978610

22

donde E16 = 1410 y A16 = 1010 . Esto termina con la discusin de la parte entera. A continuacin, se o o discute cmo diferentes bases consideran la parte fraccional de un nmero. o u De nuevo, se inicia con un ejemplo en base decimal, ya que se trata del sistema numrico ms familiar. La parte fraccional de un nmero decimal e a u se indica mediante un punto decimal. Por ejemplo, el nmero 0,13610 tiene: u 1 dcima + 3 centsimas + 6 milsimas e e e Las potencias en base 10 utiles aqu son:

101 = 1/10 = 0,1 102 = 1/(10 10) = 0,01 103 = 1/(10 10 10) = 0,001 104 = 1/(10 10 10 10 = 0,0001 105 = 1/(10 10 10 10 10) = 0,00001

De este modo, se tiene que: 0,13610 = (1 101 ) + (3 102 ) + (6 103 ) Un ejemplo que considera parte entera y fraccionaria es el siguiente: 13,317410 = (1101 )+(3100 )+(3101 )+(1102 )+(7103 )+(4104 ) Considrese ahora nmeros fraccionales en una base diferente a la base e u 10. El punto que separa la parte entera de la parte fraccionaria se llama punto decimal para la base 10. En el caso general, se llama punto a la base. En particular, en base 2 se llama punto binario, en base 8 se llama punto octal, y en base 16, punto hexadecimal. Las fracciones binarias se presentan en un nmero binario, como por u ejemplo 0,1012 tiene: 1 mitad + 0 cuartos + 1 octavo 23

Para los nmeros binarios fraccionales, entonces, se requiere de otro conu junto de potencias de 2:

21 = 1/2 = 0,510 22 = 1/(2 2) = 0,2510 23 = 1/(2 2 2) = 0,12510 24 = 1/(2 2 2 2 = 0,062510 25 = 1/(2 2 2 2 2) = 0,0312510

Y por lo tanto, se tiene que: 0,1012 = (1 21 ) + (0 102 ) + (1 103 ) = 0,62510 De forma similar:

11,1012 = (1101 )+(1100 )+(1101 )+(0102 )+(1103 ) = 3,62510 Algo similar sucede con el sistema octal, para el cual son utiles las si guientes potencias de 8:

81 = 1/8 = 0,12510 82 = 1/(8 8) = 0,01562510 83 = 1/(8 8 8) = 0,00195312510 84 = 1/(8 8 8 8) = 0,00024414062510

As por ejemplo: ,

0,2138 = (2 81 ) + (1 82 ) + (3 83 ) = 0,27148473510 Finalmente, las potencias de 16 utiles para el clculo de fracciones hexa a decimales son las siguientes: 24

161 = 1/16 = 0,0,062510 162 = 1/(16 16) = 0,0039062510 163 = 1/(16 16 16) = 0,00024414062510 164 = 1/(16 16 16 16) = 0,0000152587890610

De este modo, se tiene que: 1E3,0A116 = 483,039306640610

2.2.

Cambiando de una base a otra

Tras revisar algunos de los sistemas numricos ms importantes en la e a computacin digital, se analiza ahora algunos de los procedimientos conveo nientes que pueden utilizarse para cambiar nmeros de una base a otra. Por u ejemplo, debe ser posible expresar un nmero binario en trminos de su equiu e valente decimal o expresar tal nmero binario en trminos de su equivalente u e octal. Como se muestra en las igualdades anteriores, es relativamente sencillo convertir de un sistema nmerico cualquiera a su equivalente en base 10. Por u ahora, se presentan algunas otras conversiones, comenzando con la conversin de un nmero decimal a su equivalente binario. Supngase que se tiene o u o el nmero decimal 5310 , y se desea convertirlo en su equivalente binario. u Para esto, se hace necesario obtener cuntos d a gitos binarios se encuentran en la primera posicin del nmero entero, es decir, el d o u gito que se multiplica por 20 . Para hacer esto, se divide el nmero entre 2: u 1 53 = 26 + 2 2 El residuo de la divisin (en este caso, 1) representa el d o gito binario del 0 . Ahora, tomando el cociente, pero sin considerar nmero multiplicado por 2 u el residuo (aqu el valor 26), se divide de nuevo entre 2. Esto da como , resultado el d gito que se multiplica, ahora por la segunda posicin a la o 1: izquierda o el nmero multiplicado por 2 u 26 0 = 13 + 2 2 25

Ya que no hay residuo, no hay un d gito que multiplique a 21 para la representacin binaria de 5310 . Continuando con la divisin del cociente, se o o tiene que: 1 13 =6+ 2 2 El residuo 1 indica que hay un d gito (el propio 1) que multiplica a 22 en la expresin binaria de 5310 . Al continuar, se hace: o 0 6 =3+ 2 2 Por tanto, no hay un d gito binario multiplicando a 23 para el equivalente de 5310 . As se llega a que: , 3 1 =1+ 2 2 Que indica que hay un d gito binario mutiplicando a 24 . Finalmente, el procedimiento termina con la expresin: o 1 1 =0+ 2 2 Esto muestra que hay un d gito para 25 en la expresin binaria de 5310 . o Aqu termina el procedimiento, y se obtiene por lo tanto que:

5310 = 1101012 Si se compara esto con la expansin hecha anteriormente para el nmero o u binario 1101012 , se puede comprobar que es equivalente a 5310 . En general, se puede utilizar el procedimiento de la divisin para obtener el equivalente o binario (octal o hexadecimal) de cualquier nmero decimal. Como ejemplo, u exprsese 7510 en base 2: e 26

75 2 37 2 18 2 9 2 4 2 2 2 1 2

= 37 + = = = = = =

1 2 1 18 + 2 0 9+ 2 1 4+ 2 0 2+ 2 0 1+ 2 1 0+ 2

El nmero binario se obtiene mediante listar todos los residuos en orden u reverso, es decir, el primer residuo es el d gito ms a la izquierda o bit menos a signicativo. As se tiene que: , 7510 = 10010112 Hasta aqu se ha considerado la conversin de un nmero entero. A , o u contiuacin, se examina cmo una fraccin expresada en base 10 puede cono o o vertirse en binario. En este caso, el proceso involucra la multiplicacin con o la base en lugar de la divisin entre la base, como en el caso de los nmeros o u enteros. Por ejemplo, considrese obtener el equivalente binario de 0,12510 . e Se comienza multiplicando el nmero por 2: u 0,125 2 = 0,25 La parte entera del resultado es 0, por lo que se sabe que el d gito binario 1 del equivalente binario es 0. Ahora, se multiplica de que multiplica a 2 nuevo solo la parte fraccional del resultado por 2: 0,25 2 = 0,5 De nuevo, la parte entera del resultado es 0, por lo que el d gito que multiplica a 22 tambin es 0. Multiplicando una vez mas la parte fraccional e del resultado por 2, se tiene que: 27

0,5 2 = 1,0 La parte entera del resultado es ahora 1, de tal modo que el siguiente dig (que multiplica a 23 ) es 1. Adems, la parte fraccional del resultado to a es 0, por lo que el procedimiento puede terminarse aqu As se tiene que: . 0,12510 = 0,0012 Considrese otro ejemplo: exprsese 0,25710 en binario. Recurdese que e e e slo la parte fraccional se multiplica cada vez por 2: o

0,257 2 = 0,514 0,514 2 = 1,028 0,028 2 = 0,056 0,056 2 = 0,112 0,112 2 = 0,224 0,224 2 = 0,448 0,448 2 = 0,896 0,896 2 = 1,792 0,792 2 = 1,584 . . . Por lo tanto: 0,25710 = 0,010000011...2 Ntese que este procedimiento se puede continuar, repitindose indenio e damente; esto signica que no hay una representacin binaria exacta para o este nmero. Esto es, hay un nmero innito de trminos a la derecha del u u e punto binario. As la conversin de algunas fracciones decimales a su equiva, o lente binario puede resultar en algunas inexactitudes ya que ni las personas ni las computadoras pueden trabajar con un nmero innito de trminos. u e Tal inexactitud se conoce como error de redondeo (round-o error). El uso de sucientes trminos puede hacer que la inexactitud sea despreciable. e Ahora bien, cuando se convierte un nmero que consta tanto de parte u entera como fraccional, la conversin de cada parte se realiza de manera o 28

independiente y por separado. Por ejemplo, para expresar 53,12510 en binario, se convierten 5310 y 0,12510 como se ha mostrado anteriormente para obtener que: 53,12510 = 110101,0012 Ahora bien, si se desea convertir un nmero decimal a su equivalente u octal o hexadecimal, se utiliza el mismo procedimiento, excepto que en el caso octal la parte entera se divide entre 8 y la parte fraccionaria se multiplica por 8. Obviamente, en el caso hexadecimal, se utiliza 16. Por ejemplo, a continuacin se convierte 3110 a base octal: o 31 8 3 8 Por lo tanto: 3110 = 378 En seguida, se convierte 0,12510 a su equivalente octal: 0,125 8 = 1,000 Y por tanto: 0,12510 = 0,18 Algo similar se aplica a la conversion a base hexadecimal. Por ejemplo, 3110 se convierte a hexadecimal de la siguiente manera: 31 16 1 16 15 16 1 = 0+ 16 = 1+ 7 8 3 = 0+ 8 = 3+

Sin embargo, el nmero 15 se representa en hexadecimal mediante el u s mbolo F, por lo que: 3110 = 1F16 29

Finalmente, se muestra cmo convertir 0,12510 a hexadecimal: o 0,125 16 = 2,000 Como no hay parte fraccional remanente, se tiene que: 0,12510 = 0,216 Finalmente, se considera la conversin entre bases binaria, octal y heo xadecimal. Tal conversin es relativamente simple, y puede realizarse por o inspeccin. Supngase que se desea convertir el nmero octal 26378 a binao o u rio. Simplemente, la conversin se realiza mendiante escribir cada dgito del o nmero octal como un nmero binario de tres d u u gitos. Cuando estos d gitos se escriben en el orden en que aparecen en el nmero octal, se obtiene el u equivalente binario deseado. En el ejemplo actual: 28 = 0102 68 = 1102 38 = 0112 78 = 1112

Entonces: 26378 = 101100111112 Este simple procedimiento tambin es vlido para nmeros con parte e a u fraccional, siempre considerando dnde se encuentra el punto. Por ejemplo: o 2637,1268 = 10110011111,001010112 El procedimiento, por supuesto, puede usarse en forma inversa para convertir de binario a octal. Por ejemplo, supngase que se tiene 10112 y se desea o convertir a su equivalente octal. Primero, se aaden ceros a la izquierda del n nmero binario a n de que el nmero de d u u gitos en l sea un mltiplo de e u tres. En el ejemplo presente, esto hace que se tenga el nmero binario como u 0010112 . En seguida, se divide el nmero binario en grupos de tres d u gitos. Finalmente, se escribe el equivalente octal de cada uno de los grupos de tres d gitos. As se tiene que: , 0010112 = 138 30

El mismo mtodo se utiliza para cualquier nmero binario con parte e u fraccional, siempre tomando en cuenta la posicin del punto. Pero ahora se o aaden ceros tanto a la izquierda como a la derecha del nmero, de tal forn u ma que el nmero de d u gitos hacia la izquierda y derecha del punto binario sea un mltiplo de tres. Ntese que aadir ceros a la izquierda y derecha u o n del nmero binario original no cambia su valor numrico. Por ejemplo, conu e virtase 1011,101112 a base octal. Aadiendo ceros, se tiene: e n 001011,1011102 = 13,568 La conversin de hexadecimal a binario y de binario a hexadecimal son o muy similares a las conversiones entre binario y octal, con la excepcin de o que ahora los grupos de d gitos binarios son de cuatro. Por ejemplo: 1EA,26B16 = 0001 1110 1010,0010 0110 10112 Ntese que las conversiones entre binario, octal y hexadecimal no estn o a sujetas al error de redondeo. En general, las computadoras trabajan slo con nmeros binarios. Sin o u embargo, resulta ms fcil para las personas utilizar nmeros octales o hea a u xadecimales, ya que tienen un nmero menor de d u gitos y la conversin de o binario a octal o hexadecimal (y viceversa) es fcil de realizar utilizando un a simple programa de computadora. Por otro lado, algunas computadoras se han construido de tal modo que pueden aceptar en su entrada y producir en su salida nmeros octales y hexadecimales. Sin embargo, todo procesamienu to de datos se realiza en binario. Adems, en la mayor de las aplicaciones, a a la programacin y la entrada de datos se hace mediante nmeros decimales. o u Los nmeros octales y hexadecimales se usan cuando se requiere estudiar u los nmeros binarios dentro de la computadora. Esto es muy util si se desea u construir una computadora, y se desea probar que funciona apropiadamente. Finalmente, los nmeros binarios y sus equivalentes octales y hexadecimales u se usan tambin en algunos tipos de programas que se discuten ms adelante. e a

2.3.

Algo de aritmtica binaria elemental e

En esta seccin se discuten algunas ideas sobre la adicin utilizando o o nmeros binarios. En un cap u tulo posterior se discute la aritmtica binaria e en mayor detalle, cuando se describe cmo la artimtica se realiza por una o e computadora. Se discute, adems, algunas restricciones resultantes cuando a la aritmtica se realiza por computadoras. e 31

Ya que la base decimal es ms familiar, se inicia la discusin sobre a o aritmtica binaria elemental con un ejercicio de adicin. Considrese el sie o e guiente ejemplo:
12436 13253 25689

Como se sabe, cada columna (unidades, decenas, centenas, unidades de millar, etc.) se suma para obtener el resultado deseado. En este ejemplo, la suma de cada columna no excede o es igual a la base. As no se tiene la , necesidad de llevar un acarreo de una columna a la siguiente (consideradas de derecha a izquierda). Obsrvese lo que ocurre cuando existe un acarreo e (es decir, el resultado excede o es igual a la base):
1578 2694 4272

El resultado de la primer columna (de unidades) es 12, lo cual excede la base 10 en este caso; se escribe el 2, y los restantes 10 se acarrean a la siguiente columna (de decenas) mediante sumarle un 1. Tal procedimiento se repite para todas las columnas de los sumandos. Por ejemplo, es necesario aadir un 1 a la tercera columna (de centenas) para continuar. n Exactamente la misma idea bsica se aplica para sumar cualquier par a de nmeros, independientemente de su base. Por ejemplo, considre se la u e siguiente adicin octal: o
1253 8 4321 8 5574 8

Es posible comprobar que la adicin es correcta mediante convertir los o nmeros octales a decimales. u

32

Ahora bien, considrese una adicin octal con acarreos: e o


1476 8 1634 8 3332 8

En la tabla de la pgina 18 puede consultarse que 68 + 48 = 128 = 1010 . a Por tanto, se escribe el 2 en la columna de unidades y un 1 se acarrea a la siguiente columna (de 81 ). Ahora, se suman 18 + 78 + 38 = 138 = 1110 . Se escribe el 3 en la segunda columna y se acarrea otro 1 a la tercera columna (de 82 ). Este procedimiento parece ms complicado que la adicin en base 10, a o pero esto se debe a la poca familiaridad con los nmeros octales, y adems, u a que se requiere conocer las tablas de la adicin en base 8. o La adicin binaria utiliza el mismo procedimiento bsico. Un ejemplo o a que no requiere acarreo se muestra a continuacin: o
10110 2 01001 2 11111 2

Otro ejemplo que lleva a cabo acarreo es el siguiente:


10111 2 00011 2 11010 2

Considrese la primera columna. Se tiene que sumar 12 + 12 = 102 . e El 0 se coloca en la primera columna del resultado y se acarrea el 1 a la segunda columna (de 21 ). En la segunda columna se suma el acarreo, teniendo 12 + 12 + 12 = 112 . El 1 se escribe como resultado en la segunda columna y se acarrea otro 1 a la tercera columna (de 22 ). Como puede verse, el procedimiento se repite por tantas columnas como las haya entre los dos nmeros binarios. Ntese que las reglas de la adicin binaria son u o o exactamente las mismas que las reglas para la adicin decimal. o

33

En el siguiente ejemplo, se suman dos nmeros binarios con parte fracu cional, que igualmente siguen las reglas bsicas de la adicin. Ntese la a o o alineacin de los dos nmeros respecto al punto binario: o u
1 0 1 1 0 1.1 0 1 2 0 0 0 1 1 0.0 0 1 2 1 1 0 0 1 1.1 1 0 2

Un problema que no sucede cuando realizamos adiciones manualmente, pero que puede ocurrir cuando se utiliza una computadora, se ilustra en el siguiente ejemplo:
10110111 2 10111001 2 101110000 2

En este ultimo ejemplo, los dos nmeros que se suman tienen 8 d u gitos cada uno. Un d gito binario recibe el nombre de bit (de binary digit). As , se dice que se han sumado dos nmeros de 8 bits. Ahora bien, debido al u acarrero de la columna de la extrema izquierda, el resultado de la suma tiene 9 bits. Esto no representa ningn problema cuando las personas suman u nmeros. Sin embargo, en las computadoras, los nmeros deben almacenarse u u en dispositivos f sicos llamados registros. Un registro puede almacenar hasta un cierto nmero de bits. Si el nmero binario que debe almacenarse tiene u u ms bits que los que pueden almacenarse en el registro, el exceso de bits a se pierde. Notoriamente, esto puede provocar un error muy substancial. Por ello, es importante analizar a detalle cmo tal error sucede. o Un registro que puede almacenar un nmero binario de 8 bits puede u representarse grcamente como se muestra en la gura 2.1 (el siguiente a cap tulo discute circuitos reales para la implementacin de registros). o
1 0 1 1 0 1 0 1 MSB LSB

Figura 2.1: Una representacin grca de un registro de 8 bits almacenando o a el nmero 101101012 . u El bit a la extrema derecha se conoce con el nombre de bit menos sig34

nicativo (least signicant bit o LSB) ya que tiene el valor numrico ms e a pequeo de todos los d n gitos que componen al nmero binario. En forma u similar, el bit ms a la extrema izquierda se le conoce como bit ms siga a nicativo (most signicant bit o MSB), debido a que tiene el mayor valor numrico dentro de nmero binario. Por el momento, supngase que se trae u o baja con valores enteros (en el cap tulo 5 se aplican las mismas ideas a nmeros con parte fraccional). u Ahora bien, si por una operacin aritmtica como la adicin, el resultado o e o que se obtiene tiene ms bits que los que pueden almacenarse en el registro, a entonces (a) los bits que se retienen son los menos signicativos; y (b) los bits ms signicativos se pierden. Por lo tanto, en el ultimo ejemplo de adicin, a o si el resultado se coloca en un registro de 8 bits, la respuesta ser a: 011100002 = 11210 en lugar de la respuesta correcta, que ser a: 1011100002 = 36810 Como puede observarse, esto representa un error substancial e importante, conocido con el nombre de sobrecapacidad u overow. Los constructores de computadoras, as como los usuarios de las mismas, deben entender claramente el almacenamiento de nmeros binarios en registros para evitar u este tipo de errores. En los cap tulos 4 y 5 se discuten la teor y aritmtia e ca del almacenamiento de nmeros binarios en mayor detalle, as como las u formas en que el overow puede, en ocasiones, utilizarse como ayuda en el cmputo. o

35

36

Cap tulo 3

Elementos bsicos de una a computadora


La computadora digital de la actualidad se compone de un conjunto de circuitos, los cuales representan sus bloques bsicos de construccin. Por a o tanto, entender tales circuitos bsicos es un paso esencial para comprender a cmo funcionan las computadoras. En el presente cap o tulo se supone en general qu seales digitales (formadas por conjuntos de ceros y unos) se e n aplican a los circuitos que se discuten. En siguientes cap tulos se ve de dnde o provienen tales seales. n Otro objetivo de este cap tulo es introducir una forma fcil de referirse y a describir los circuitos digitales. Esto no hace la discusin ms breve, pero la o a idea es asistir al lector durante el aprendizaje de cmo conectar en conjunto o los circuitos de computadora.

3.1.

Notacin lgica o o

En una computadora digital, todos los valores se representan por ceros (0s) o unos (1s). Se puede decir que un valor, en cualquier momento, es una seal (una variable f n sica cuya magnitud cambia en el tiempo), y que tal seal es digital cuando slo puede tener los valores de 0 1. A tales n o o valores se les conoce con el nombre de valores lgicos. Tal nombre proviene o de una rama de las matemticas conocida como lgica matemtica. En tal a o a rama, el objetivo es estudiar aquellas situaciones o hechos que son falsos o verdaderos. Respecto a las computadoras digitales, stas se construyen e para funcionar con 0s y 1s, es decir, son una implementacin f o sica de un 37

sistema matemtico de dos valores, lo que hace que la lgica matemtica a o a tenga una gran aplicacin e importancia en el diseo de computadoras. Sin o n embargo, para ello no es necesario considerar todos los detalles de la lgica o matemtica. Basta considerar algunas ideas simples que ayudan a entender a de forma fcil la circuiter de una computadora digital. a a Inicialmente, se requiere denir qu es una variable binaria. Esto no es e otra cosa que una variable que puede tener un valor 0 1, es decir, en o un momento dado, tal variable puede contener como valor un 0 o un 1. Las variables binarias se utilizan para representar los valores de las seales n digitales dentro de una computadora. Ntese la razn por lo que esto es o o conveniente. En la Figura 3.1 se muestra un simple interruptor. En una computadora, tal interruptor se construye utilizando transistores u otros dispositivos semiconductores. Sin embargo, para los propsitos actuales y o por simplicidad, se muestra aqu como un simple interruptor. Ntese que o en la gura, la letra A representa una variable binaria: cuando A = 0, el interruptor se encuentra abierto, y cuando A = 1, el interruptor se cierra. El s mbolo a la izquierda del diagrama es una bateria con voltaje V, y el s mbolo a la derecha del diagrama es una resistencia elctrica R. Es conveniente e pensar en ella como un pequeo foco. n

Figura 3.1: Un circuito lgico simple. o Comnmente, al circuito de la Figura 3.1 se le conoce como circuito u lgico, donde B representa la ca de voltaje en la resistencia. Cuando el o da interruptor est abierto, B = 0. Cuando el interruptor se cierra, el voltaje de a la bateria se presenta en la resistencia (el foco se enciende). Se considera que esto corresponde a B = 1. Por lo tanto, cuando A = 1, entonces B = 1; y cuando A = 0, entonces B = 0. Se puede escribir esto mediante la ecuacin: o A=B 38

Otra forma de describir este comportamiento del circuito lgico es meo diante una tabla de verdad. En tal tabla, se listan los valores que va tomando la salida B para todos los posible valores de entrada de A. Para el circuito lgico de la Figura 3.1 se tiene que: o

A 0 1

B 0 1

B se conoce como variable dependiente, ya que su valor depende del valor de A. Complementariamente, A se conoce como variable independiente, pues su valor no depende de ninguna otra variable. Considrese ahora el circuito de la Figura 3.2, que es un poco ms complie a cado que el anterior. Recurdese que los interruptores estn cerrados cuando e a su valor es 1, y se encuentran abiertos cuando su valor es 0.
A
1

Figura 3.2: Otro circuito lgico. o Para este circuito, B toma el valor de 1 si A1 y A3 son ambos 1, si o A2 y A3 son ambos 1, si A1 , A2 y A3 son todos 1. La tabla de verdad es o ahora una forma conveniente de mostrar esta informacin. La columna de o salida B muestra los valores que tal variable puede presentar para todas las combinaciones posibles de las variables independientes A1 , A2 y A3 . 39

A1 0 0 0 0 1 1 1 1

A2 0 0 1 1 0 0 1 1

A3 0 1 0 1 0 1 0 1

B 0 0 0 1 0 1 0 1

Para nalizar, es importante mencionar que en esta seccin se consideo ran tan solo algunas formas de representar circuitos lgicos. En realidad, los o circuitos que se han discutido se conocen como circuitos combinacionales o lgica combinacional. En la siguiente seccin se contina la discusin de o o u o algunos circuitos combinacionales que forman los bloques bsicos de consa truccin de computadoras. o

3.2.

Compuertas

Los circuitos lgicos digitales se encuentran disponibles en forma de ciro cuitos integrados (o chips), de tal modo que pueden utilizarse para construir cualquier tipo de circuitos lgicos. En las siguientes secciones se muestra o cmo ciertos circuitos bsicos, genricamente llamados compuertas lgicas o a e o (logic gates) o simplemente compuertas (gates), se usan para construir en la prctica varios dispositivos lgicos. Tales compuertas realizan algn tipo a o u de operacin lgica. Por tanto, se presenta la operacin y el circuito que la o o o representa y realiza.

3.2.1.

La compuerta AND

Una de las ms comunes e importantes operaciones lgicas se ilustra a o en la Figura 3.3, la cual muestra dos interruptores conectados mediante un circuito en serie. Ntese que B = 1 slo en el caso en que tanto el interruptor o o A1 como el interruptor A2 tengan ambos un valor de 1. Es por esto que a este circuito se le conoce con el nombre de circuito AND.

40

Figura 3.3: Un circuito AND con interruptores. La tabla de verdad de la operacin lgica AND se muestra como sigue: o o A1 0 0 1 1 A2 0 1 0 1 B 0 0 0 1

Con la nalidad de obtener una representacin ms breve, se utilizan alo a gunos s mbolos especiales entre las variables para indicar operaciones lgicas. o En el caso de la operacin AND, comnmente se utiliza un punto () entre o u las variables. De tal modo, la operacin de la Figura 3.3 puede representarse o mediante la siguiente ecuacin: o B = A1 A2 Muy frecuentemente, el punto se omite. Es por ello que la siguiente expresin es equivalente: o B = A1 A2 Actualmente, existen algunas compuertas semiconductoras que han sido construidas para realizar la operacin lgica AND; si la compuerta realiza o o la operacin AND, entonces se le conoce como compuerta AND. Ms aun, o a en lugar de utilizar interruptores para representar compuertas, se utilizan algunos s mbolos o diagramas lgicos, que son ms pequeos y fciles de o a n a dibujar. El s mbolo para la compuerta AND se muestra en la Figura 3.4. 41

A A

1 2

A A A

1 2 3

Figura 3.4: S mbolos para la compuerta AND de dos y tres entradas. Ntese que inicialmente se muestra una compuerta AND con dos entrao das. En realidad, las compuertas AND pueden construirse con muchas ms a entradas (o compuertas AND pueden conectarse entre s se modo que se ob tenga un circuito lgico cuya salida sea equivalente a una compuerta AND o de varias entradas). La Figura 3.4 muestra tambin una compuerta AND de e tres entradas. La variable de salida B tiene como valor 1 slo si las variables o de entrada A1 , A2 y A3 tienen todas valor de 1.

3.2.2.

La compuerta OR

La operacin OR, que consiste en dos interruptores conectados en parao lelo, se muestra en la Figura 3.5. Aqu B tiene valor de 1 si A1 es 1, si A2 , o es 1, si ambos A1 , A2 son 1. o
A
1

Figura 3.5: Un circuito de interruptores para la operacin lgica OR. o o La tabla de verdad de la operacin lgica OR es como sigue: o o A1 0 0 1 1 A2 0 1 0 1 B 0 1 1 1

42

El s mbolo usado para designar la operacin lgica OR en forma de o o ecuacin es +. Por tanto, para el circuito de la Figura 3.5, se tiene que: o B = A1 + A2 Ntese que cuando las ecuaciones lgicas se escriben, los s o o mbolos que utilizan son los mismos que se usan en aritmtica ordinaria. Sin embargo su e signicado no es el mismo. La Figura 3.6 muestra los s mbolos para una compuerta OR de dos y cuatro entradas.
A A
1 2

A A A A

1 2 3 4

Figura 3.6: S mbolos para la compuerta OR. Para la compuerta OR de cuatro entradas, se tiene la siguiente ecuacin: o B = A1 + A2 + A3 + A4 En este caso, B tiene el valor de 1 si A1 A2 A3 A4 , en cualquier o o o combinacin, es 1. o Un ejemplo de circuitos construidos con compuertas se muestra en la Figura 3.7.
A A A
1 2

B
3

Figura 3.7: Un circuito con compuertas para el circuito de la Figura 3.2. Ntese que la variable de salida B tiene valor 1 si A1 A2 tienen valor 1, o o y adems si A3 tiene valor 1. De hecho, el circuito de la Figura 3.7 representa a mediante un circuito con compuertas la funcin del circuito con interruptores o de la Figura 3.2. 43

La ecuacin lgica que representa a ambos circuitos es: o o B = (A1 + A2 )A3 El parntesis en esta expresin se interpreta de la siguiente forma: todos e o los trminos o variables dentro del parntesis se tratan como una sola variae e ble en relacin con los trminos o variables fuera del parntesis. Por tanto, o e e B tiene valor 1 si A1 A2 da como resultado 1, y este resultado y A3 da o como resultado 1.

3.2.3.

La compuerta NOT

Considrese ahora la operacin lgica llamada negacin o complemento. e o o o Si la variable A tiene como valor 1, su negacin es 0; si A tiene valor 0, su o negacin es 1. Esto signica que cuanto se obtiene la negacin o complemento o o de una variable, sta cambia su valor de 0 a 1 o viceversa. El s e mbolo que se utiliza para la negacin es una comilla ( ). Por lo tanto, si B es la negacin o o de A, se escribe la ecuacin: o B = A La compuerta que realiza la negacin de una varibale se conoce como o compuerta NOT. Su diagrama lgico se presenta en la Figura 3.8. o
A A

Figura 3.8: El diagrama lgico de la compuerta NOT. o Ntese que las compuertas NOT tienen tan solo una entrada. El pequeo o n c rculo en el diagrama de la compuerta NOT se utiliza frecuentemente para representar la operacin de negacin. Por ejemplo, para la Figura 3.9, se o o tiene la ecuacin: o B = A1 A2 Efectivamente, el pequeo c n rculo representa una compuerta NOT que toma como entrada la variable A2 . Sin embargo, el s mbolo del pequeo n c rculo nunca se utiliza solo, sino en conjunto con otras compuertas, como se muestra a continuacin. o 44

A A

1 2

Figura 3.9: Un circuito lgico que realiza la operacin B = A1 A2 . o o

3.2.4.

La compuerta NOR

La operacin lgica NOR consiste en realizar una operacin OR y negar o o o el resultado. Se dene mediante la ecuacin: o B = (A1 + A2 ) La tabla de verdad para una operacin NOR es: o A1 0 0 1 1 A2 0 1 0 1 B 1 0 0 0

Ntese que para esta operacin, la variable de salida B es tan solo la o o negacin de la operacin OR de las variables de entrada. o o El diagrama lgico de la compuerta NOR se muestra en la Figura 3.10. o
A A
1 2

A B A A

1 2 3

Figura 3.10: El diagrama lgico de la compuerta NOR. o Tambin se muestra en la Figura 3.10 una compuerta NOR de tres ene tradas, cuya ecuacin lgica es: o o B = (A1 + A2 + A3 ) Para la compuerta NOR, la variable de salida B tiene un valor de 0 cuando A1 , A2 , A3 , o cualquiera de sus combinaciones entre s tiene valor 45

1. De hecho, las compuertas NOR, as como las compuertas NAND que se discuten a continuacin, puede construirse de una manera muy sencilla o como semiconductores en forma de circuitos integrados, siendo su uso en general y en la prctica muy diseminado. Adems, toda funcin lgica puede a a o o construirse a partir de compuertas NOR y NAND, como se discute ms a adelante.

3.2.5.

La compuerta NAND

La operacin lgica NAND consiste en realizar una operacin AND y o o o negar el resultado. Se dene mediante la ecuacin siguiente: o B = (A1 A2 ) La tabla de verdad de la operacin NAND es como sigue: o A1 0 0 1 1 A2 0 1 0 1 B 1 1 1 0

Ntese que el valor de la variable B es tan solo la negacin de la operacin o o o AND entre las variables de entrada A1 y A2 . El diagrama lgico para una o compuerta NAND se muestra en la Figura 3.11
A A
1 2

A A A A

1 2 3 4

Figura 3.11: El diagrama lgico de la compuerta NAND. o Como se muestra en la Figura 3.11 y es el caso de la mayor de las a compuertas, la compuerta NAND puede contar con ms de dos entradas. a La compuerta NAND de cuatro entradas que se muestra tiene la ecuacin o lgica: o B = (A1 A2 A3 A4 ) Ntese que B tiene valor 0 slo si A1 , A2 , A3 y A4 tienen todas valor 1. o o 46

3.2.6.

La compuerta XOR

La operacin lgica OR exclusiva, que se conoce con el nombre de XOR, o o es similar a la operacin OR excepto que, para el caso de dos entradas, la o salida B tiene valor 0 cuando ambas variables de entrada A1 y A2 tienen valor 1. El s mbolo dado a la operacin XOR es . Por lo tanto, la ecuacin o o para la operacin XOR se escribe como: o B = A1 A2 La tabla de verdad de la operacin XOR es como sigue: o A1 0 0 1 1 A2 0 1 0 1 B 0 1 1 0

El diagrama lgico de la compuerta XOR se muestra en la Figura 3.12. o


A A
1 2

Figura 3.12: El diagrama lgico de la compuerta XOR. o Cuando una compuerta XOR tiene ms de dos entradas, el resultado a la a salida es algo ms complicado. Supngase que se tiene la siguiente ecuacin: a o o B = A1 A2 A3 Es posible re-escribirla de la siguiente manera: B = (A1 A2 ) A3 De este modo, es posible obtener la operacin XOR entre A1 y A2 , a su o resultado, hacer de nuevo una operacin XOR con A3 . De hecho, la agrupao cin de las dos primeras variables puede considerar cualquier combinacin o o de entre dos variables de las tres existentes. El resultado de la operacin o XOR con tres entradas se muestra en la siguiente tabla de verdad: 47

A1 0 0 0 0 1 1 1 1

A2 0 0 1 1 0 0 1 1

A3 0 1 0 1 0 1 0 1

A1 A2 0 0 1 1 1 1 0 0

B 0 1 1 0 1 0 0 1

Ntese que si A1 = 1, A2 = 1, y A3 = 1, entonces A1 A2 A3 = 1, y o no 0, como podr haberse esperado. a Hasta ahora, se han mostrado una serie de compuertas que operan uni camente entre variables de entrada y salida. En realidad, las compuertas de los circuitos digitales integrados tienen otras variables, que f sicamente son terminales o conexiones. De tal modo, las seales lgicas consisten de n o voltajes que se aplican (en el caso de las entradas) o se miden (en el caso de las salidas) entre pares de terminales. Una de tales terminales es llamada en circuitos elctricos la tierra (ground, o GND), la cual es comn para todas e u las entradas y salidas. Obsrvese que en los diagramas lgicos no se muestra e o tal conexin, ya que tales diagramas se presentan de una manera unicamente o convencional. Sin embargo, a n de que las compuertas (o cualquier circuito digital integrado) funcione apropiadamente, debe conectarse a un voltaje directo, como el que proporciona una bateria o una fuente de voltaje. Las conexiones a la fuente de voltaje tambin se requieren como parte del circuito integrado, e pero tampoco se muestran en los diagramas lgicos. Ntese que el voltaje o o directo que debe aplicarse debe tener una magnitud determinada (para la mayor de los circuitos digitales integrados, tal valor es de 5 V). Si no es as a , el circuito podr no funcionar apropiadamente si el voltaje de alimentacin a o es muy pequeo, o podr quemarse si es muy grande. n a

3.3.

Interconexin de compuertas para obtener otras o compuertas

Todas las compuertas que se han mencionado hasta ahora son utilizadas cuando se disean e implementan circuitos lgicos para una computadora n o digital. Sin embargo, comnmente en la prctica no se requiere que todos u a 48

los tipos de compuertas sean f sicamente construidos, ya que la operacin o de algunas compuertas puede obtenerse a partir de interconectar otras compuertas ms pequeas y sencillas de implementar. Por ejemplo, considrese a n e las interconexiones que se muestran en la Figura 3.13.

A A A

1 2 3

( A 1 + A 2 + A 3 )

A A

1 2

( A 1 A 2 )

A A

1 2

Figura 3.13: Interconexiones entre compuertas AND, OR y NOT para obtener compuertas NOR, NAND y XOR.

Ntese que las operaciones NOR y NAND son tan solo negaciones de o las operaciones OR y AND, respectivamente. Por tanto, tales operaciones lgicas se obtienen mediante aplicar una compuerta NOT a la salida de las o compuertas OR o AND, segn sea el caso. u Sin embargo, la implementacin de la compuerta XOR es algo ms como a plicada. De hecho, es necesario hacer un cierto anlisis para demostrar que a la interconexin (A1 + A2 )(A1 A2 ) es equivalente a la operacin XOR. La o o forma ms sencilla es escribir la tabla de verdad para esta interconexin: a o 49

A1 0 0 1 1

A2 0 1 0 1

A1 + A2 0 1 1 1

A1 A2 0 0 0 1

(A1 A2 ) 1 1 1 0

(A1 + A2 )(A1 A2 ) 0 1 1 0

A1 A2 0 1 1 0

Comparando las dos ultimas columnas de la tabla, es claro que ambas representan la misma operacin. Por lo tanto, (A1 + A2 )(A1 A2 ) = A1 A2 , o por lo que el tercer diagrama lgico de la Figura 3.13 es equivalente a una o operacin XOR. o En realidad, las compuertas que son ms fciles de implementar utilia a zando tecnolog de semicondutores son las compuertas NOR y NAND. De a hecho, todas las operaciones lgicas pueden implementarse mediante una o interconexin que utiliza unicamente compuertas NOR o unicamente como puertas NAND. La Figura 3.14 muestra las interconexiones de compuertas NOR para obtener compuertas NOT, OR y AND. Una compuerta NOT se obtiene mediante conectar las dos entradas de una compuerta NOR. As si la variable de entrada A1 tiene valor 1, la salida , de la compuerta NOR es 0; si la variable de entrada A1 tiene valor 0, la salida de la compuerta NOR es 1. Por tanto, la salida es efectivamente la negacin o de la entrada, lo que equivale a una compuerta NOT. La segunda interconexin de compuertas NOR de la Figura 3.14 impleo menta la operacin de una compuerta OR. Si se realiza la negacin dos veces, o o se obtiene la variable original, es decir: (A ) = A De este modo, la salida de la compuerta NOR se niega con otra compuerta NOR conectada como compuerta NOT. As negando la salida de la , NOR, se obtiene una compuerta OR. La tercera interconexin de la Figura 3.14 representa una compuerta o AND. Dado que se trata de una interconexin ms complicada, se recurre a o a una tabla de verdad para comprobar su operacin: o 50

A 1

A A

1 2

( ( A 1 + A 2 ) ) = A 1 + A

( A 1 + A 2 ) = A 1A

Figura 3.14: Interconexiones entre compuertas NOR para obtener compuertas NOT, OR y AND.

51

A1 0 0 1 1

A2 0 1 0 1

A1 1 1 0 0

A2 1 0 1 0

A1 + A2 1 1 1 0

(A1 + A2 ) 0 0 0 1

A1 A2 0 0 0 1

Cuando se comparan las dos ultimas columnas, es notorio que: (A + A ) = A1 A2 1 2 por lo que tal interconexin representa una operacin AND. o o De forma similar, se muestra a continuacin cmo las compuertas NOT, o o AND y OR pueden obtenerse mediante una interconexin de compuertas o NAND, como se muestra en la Figura 3.15. La primera inteconexin de la Figura 3.15 muestra la implementacin de o o una compuerta NOT mediante una compuerta NAND cuyas entradas han sido conectadas juntas. Por tanto, cuando la variable de entrada A1 tiene valor 1, la salida de la compuerta NAND es 0. Similarmente, si la variable de entrada A1 tiene valor 0, la salida de la compuerta NAND es 1. Por tanto, se obtiene una operacin NOT. o La segunda interconexin de la Figura 3.15 representa una operacin o o AND. Esto es notorio debido a que la operacin NAND es solamente la o negacin de la operacin AND. De tal modo, al obtener la negacin de la o o o negacin, se obtiene la operacin deseada AND. o o Finalmente, se puede mostrar que la tercera interconexin de la Figura o 3.15 es una operacin OR mediante la siguiente tabla de verdad: o A1 0 0 1 1 A2 0 1 0 1 A1 1 1 0 0 A2 1 0 1 0 A1 A2 1 0 0 0 (A1 A2 ) 0 1 1 1 A1 + A2 0 1 1 1

Al comparar las ultimas dos columnas, es notorio que: (A A ) = A1 + A2 1 2 lo que indica que tal interconexin representa una operacin OR. o o 52

A 1

A A

1 2

( ( A 1 A 2 ) ) = A 1 A

( A 1 A 2 ) = A 1 + A

Figura 3.15: Interconexiones entre compuertas NAND para obtener compuertas NOT, AND y OR.

53

3.4.

El sumador

Tras una breve introduccin a los principales tipos de compuertas lgicas, o o en esta seccin se muestra cmo las compuertas lgicas pueden interconeco o o tarse de modo que se produzca un circuito digital que realice una suma binaria. Supngase que se desea sumar dos nmeros de un solo bit, a1 y b1 . o u La suma se expresa de la siguiente forma:

c1

a1 b1 s1

donde s1 y c1 son a la vez nmeros de un solo bit, siendo s1 el d u gito suma y c1 el d gito acarreo. La tabla de verdad de esta operacin se muestra o a continuacin: o a1 0 0 1 1 b1 0 1 0 1 s1 0 1 1 0 c1 0 0 0 1

Ntese que los valores binarios de s1 y c1 se obtienen siguiendo las reglas o de la suma binaria. Considerando s1 y c1 separadamente, se construye a continuacin un circuito lgico que cumpla con lo expresado en la tabla o o de verdad. Tal circuito lgico se conoce con el nombre de sumador medio o (half-adder), por razones que se discuten ms adelante. a Considrese la variable c1 . El circuito debe ser tal que produzca un valor e 1 como salida slo cuando a1 y b1 son ambos 1, es decir: o c1 = a1 b1 Es sencillo notar que que c1 se obtiene de aplicar la operacin AND o entre a1 y b1 , por lo que se utiliza una compuerta AND que cumple con tal funcionalidad. Ahora bien, considrese la variable s1 . Tal variable tiene valor de 1 en e dos renglones de la tabla de verdad, de tal modo que hay dos conjuntos de entradas que producen un valor de 1 para s1 . Un conjunto de tales entradas 54

sucede cuando a1 = 0 y b1 = 1. El otro conjunto sucede cuando a1 = 1 y b1 = 0. De este modo, se tiene la siguiente expresin para s1 : o s1 = a1 b1 + a1 b1 De acuerdo con esta ecuacin, se desea que s1 tenga valor 1: o cuando a1 = 0 y b1 = 1 o cuando a1 = 1 y b0 = 1 La Figura 3.16 muestra la interconexin de compuertas para obtener las o variables de salida s1 y c1 a partir de las variables de entrada a1 y b1 .
a
1

b1

s1

c1

Figura 3.16: Interconexiones de compuertas para obtener un sumador medio. El razonamiento detrs de esta interconexin se basa en considerar que a o la variable de salida s1 tiene valor 1, primero, si a1 = 0 y b1 = 1. Pensando en trminos positivos, se sabe que si a1 = 0, implica que a1 = 1. Ahora e bien, a1 b1 tiene valor de 1 cuando a1 AND b1 tiene valor 1. De hecho, esto es similar que decir a1 = 0 y b1 = 1, que es el punto inicial de este anlisis. a 55

De forma similar, s1 tiene valor 1 si a1 = 1 y b1 = 0. De nuevo, pensando en trminos positivos, se sabe que si b1 = 0, implica que b1 = 1. Ahora bien, e a1 b1 tiene valor de 1 cuando a1 AND b1 tiene valor 1. La expresin para s1 consiste de una operacin OR aplicada entre a1 b1 o o y a1 b1 . Este razonamiento da como resultado el circuito de la Figura 3.16. El sumador medio puede utilizarse para sumar unicamente dos bits. Sin embargo, considrese ahora que se desea sumar dos valores binarios de ms e a de un bit. Parecer que cada par de bits dentro de los valores binarios a pudieran ser sumados utilizando sumadores medios entre ellos. Este no es el caso, ya que para sumar dos valores binarios de ms de un bit siguiendo las a reglas de la adicin, es necesario considerar el acarreo que resulta de la suma o de los dos bits anteriores. Por lo tanto, es necesario que cada sumador de dos bits considere tales valores y adems el acarreo que se produce de la suma de a los bits en la columna anterior. Un sumador que toma en cuenta tal acarrero se conoce como sumador completo (full-adder). De este modo, para sumar dos valores binarios de ms de un bit, se utilizan sumadores completos para a cada par de bits. Por ejemplo, si se desea sumar dos nmeros de 8 bits cada u uno, son necesarios 8 sumadores completos. Considrese la operacin de un sumador completo. Supngase que tal e o o sumador adiciona los j-simos bits de dos valores binarios. Se tiene, entonces, e que:

cj

c j1 aj bj sj

Ntese que cj1 es el acarreo de la columna anterior j 1, que es la o columna inmediatamente a la derecha de la columna de bits que se suma aqu De nuevo, utilizando las reglas de la adicin binaria, se tiene la siguiente . o tabla de verdad para el sumador completo: 56

aj 0 0 0 0 1 1 1 1

bj 0 0 1 1 0 0 1 1

cj1 0 1 0 1 0 1 0 1

sj 0 1 1 0 1 0 0 1

cj 0 0 0 1 0 1 1 1

Mediante el razonamiento utilizado para obtener el circuito del sumador medio, se obtiene el circuito de la Figura 3.17.
a
j

bj

j1

sj

cj

Figura 3.17: Interconexiones de compuertas para obtener un sumador completo.

57

Cada 1 en la columna de sj resulta en una compuerta AND en el circuito lgico para sj , Similarmente, cada 1 en la columna de cj resulta en una o compuerta AND en el circuito lgico para cj . De este modo, se pueden o escribir las ecuaciones para ambas variables de salida del sumador completo: sj = aj bj cj1 + aj bj cj1 + aj bj cj1 + aj bj cj1 cj = aj bj cj1 + aj bj cj1 + aj bj cj1 + aj bj cj1 En la Figura 3.17, sj se implementa mediante cuatro compuertas AND, cada una con tres entradas, cuyas salidas se conectan a la vez a una compuerta OR de cuatro entradas. Similarmente, cj requiere de cuatro compuertas AND conectadas a una compuerta OR. Sin embargo, ntese que en la gura o slo se utilizan siete compuertas AND, dado que sj y cj pueden compartir o la salida de una compuerta AND. La intencin aqu es reducir el nmero de o u compuertas que se conectan en el circuito.

3.5.

El multiplexor

En esta seccin, se discute otro circuito lgico util llamado multiplexor, o o que se trata de un interruptor controlado digitalmente. La Figura 3.18 muestra el diagrama de bloque de un multiplexor con cuatro entradas: a0 , a1 , a2 y a3 , y una salida b.
a

a1 a2 a3

c1

c0

Figura 3.18: Diagrama de bloque de un multiplexor con cuatro entradas. La funcin del multiplexor es conectar una de las variables de entrada o a la variable de salida. La variable de entrada se selecciona mediante un 58

valor digital que se coloca en las terminales c1 y c0 . La seleccin se hace o de la siguiente forma: c1 y c0 se consideran bits independientes, pero en conjuncin, se pueden ver como un valor binario de dos bit, siendo c1 el bit o ms signicativo y c0 el bit menos signicativo. Por ejemplo, si c1 = 1 y a c0 = 0, entonces el valor de la seleccin es 102 = 210 . Si c1 = 1 y c0 = 1, o entonces el valor de la seleccin es 112 = 310 . Ahora bien, el valor base 10 o del valor binario c1 c0 indica el sub ndice de la entrada que se conecta a b. Por ejemplo, si c1 = 1 y c0 = 1 (112 = 310 ), entonces: b = a3 Es decir, si a3 = 1, entonces b toma el valor de 1; si a3 = 0, entonces b toma el valor de 0. Puede obtenerse una expresin lgica que describe la operacin del mulo o o tiplexor de cuatro entradas: b = c1 c0 a0 + c1 c0 a1 + c1 c0 a2 + c1 c0 a3 Esta expresin muestra la operacin OR entre cuatro operaciones AND. o o Debido a la operacin OR, si cualquiera de las AND da como resultado 1, o entonces b toma el valor 1. Supngase que c1 = 0 y c0 = 0. Esto da como o resultado los las siguientes operaciones en cada AND:

c1 c0 a0 = 1 1 a0 = a0 c1 c0 a1 = 1 0 a1 = 0 c1 c0 a2 = 0 1 a2 = 0 c1 c0 a3 = 0 0 a3 = 0 De tal modo, para c1 = 0 y c0 = 0, se tiene que: b = a0 Ntese que en este caso la salida b depende del valor de a0 : si a0 = 1, o entonces b = 1; si a0 = 0, entonces b = 0. A partir de la ecuacin que describe la operacin del multiplexor de o o cuatro entradas, se puede construir un multiplexor utilizando compuertas lgicas, como se muestra en la Figura 3.19. o 59

a0

a1

b a2

a3

c1

c0

Figura 3.19: Un multiplexor con cuatro entradas.

60

Los multiplexores se utilizan en circuitos digitales del mismo modo que los interruptores se utilizan en circuitos elctricos ordinarios. Dado que puee den servir para la conexin de la salida con varias probables entradas, se o utilizan comnmente para la seleccin de informacin binaria. u o o

3.6.

Flip-ops

Hasta este punto, los circuitos digitales que se han discutido son conocidos bajo la denominacin de circuitos lgicos combinacionales, en los cuales o o el valor de la variable de salida, en cualquier momento, depende slo de los o valores de las variables de entrada disponibles en ese momento. De este modo, estos circuitos no tienen memoria, es decir, el valor de las variables de salida no dependen de los valores en el pasado de las variables de entrada. El valor de la variable salida, entonces, se dice que es una combinacin lgica o o unicamente de los valores actuales de las variables de entrada. En esta seccin se inicia la descripcin de circuitos digitales que s cueno o tan con una capacidad de memoria. Tales circuitos se conocen con el nombre de circuitos lgicos secuenciales. Particularmente, en esta seccin se discuten o o algunos circuitos secuenciales bsicos llamados ip-ops, los cuales represena tan importantes bloques bsicos de construccin de muchos otros circuitos a o secuenciales de mayor tamao. n Un ip-op o multivibrador biestable es un circuito cuya variable de salida permanece con un valor de 0 1 hasta que uno o ms valores binarios se o a apliquen a sus terminales de entrada, en cuyo caso el valor de la variable de salida cambia en el siguiente tiempo. Por ejemplo, si la salida tiene valor 0, permanece en tal valor hasta que los valores binarios adecuados se apliquen a sus entradas, causando su cambio a un valor de 1. En forma similar, si la salida tiene valor 1, permanece en tal valor hasta que los valores binarios adecuados se apliquen a sus entradas, causando su cambio a un valor de 0. Ya que la salida del ip-op no cambia hasta que los valores binarios adecuados se apliquen a sus entradas, este dispositivo es capaz de recordar el valor de un solo d gito binario (bit). La Figura 3.20 muestra un diagrama de bloques para un ip-op. Nteo . Como se ha se que este dispositivo tiene dos salidas, etiquetadas Q y Q indicado anteriormente, Q representa la negacin o complemento de Q. Al o trabajar con computadoras, es util y conveniente contar con valores binarios no slo de las variables, sino tambin de su complemento, lo que elimina o e 61

Entradas

Salidas

Q Q

Figura 3.20: Diagrama de bloques de un ip-op. la necesidad de muchas compuertas NOT. De tal modo, la mayor de los a ip-ops se construyen para tener disponibles las dos salidas. Comnmente, el valor de Q es llamado el estado del ip-op. Si Q = 1, u entonces el estado del ip-op es 1. Similarmente, si Q = 0, el estado del ipop es 0. A continuacin, en las siguientes secciones se mencionan algunos o de los ip-ops ms utiles y conocidos. a

3.6.1.

El ip-op RS

La Figura 3.21 muestra el diagrama de bloques de un ip-op RS. En este ip-op, si las variables de entrada tienen los valores R = 0 y S = 0, entonces la variable de salida Q no cambiar en el siguiente tiempo. Por a ejemplo, si Q = 1 cuando se reciben las entradas R = 0 y S = 0, entonces Q permanece con valor 1 para el siguiente tiempo (y obviamente, Q = 0 tambin permanece con tal valor para el siguiente tiempo). e
R a R Q Q Q

b S

Figura 3.21: El ip-op RS: diagrama de bloques e implementacin con o compuertas NOR. Ahora bien, si R = 0 y S = 1, entonces la salida Q (el estado) del ip62

op RS toma un valor de 1 (Q = 1, Q = 0). Sin importar cul era el estado a anterior del ipop RS, despus de que se aplican los valores de R = 0 y e S = 1 a las entradas correspondientes, el valor de su salida es Q = 1. Similarmente, si los valores a las entradas del ip-op RS se hacen R = 1 y S = 0, entonces el estado del ip-op se vuelve 0. Sin importar el valor previo de su salida, tras aplicar R = 1 y S = 0, el valor de su salida es de Q = 0. Finalmente, no es permitido que los valores a las entradas de un ip-op RS sean R = 1 y S = 1. En general, si se intenta aplicar tales entradas a un ip-op RS, se obtienen resultados errricos. Por ejemplo, supngase a o que se tienen dos ip-ops RS construidos por dos fabricantes diferentes. Ambos ip-ops tienen un comportamiento similar para todas las entradas permitidas. Sin embargo, si se aplica R = 1 y S = 1 a estos ip-ops, pueden actuar en formas diferentes. De hecho, las designaciones de las entradas R y S tienen como origen las palabras reset y set. As las entradas R = 0 y S = 1 , indican al ip-op tomar el estado Q = 1, mientras que las entradas R = 1 y S = 0 le indican tomar el estado Q = 0. La pregunta es qu signicar e a el hecho de que ambas entradas tomaran el valor de 1 al mismo tiempo? Por otro lado, hay muchas formas de construir ip-ops. Un ip-op RS construido con compuertas NOR se muestra en la Figura 3.21. Considrese e su operacin: supngase que Q = 0 y Q = 1, y que R = 0 y S = 0. Una o o entrada a la compuerta NOR a tiene valor 1. Por lo tanto, Q permanece con valor 0. Adems, ambas entradas a la compuerta NOR b son 0; por lo a tanto, Q permanece con valor 1. En resumen, la salida (estado) del ip-op no cambia. Ahora, supngase que las entradas toman valores R = 0 y S = 1. Despus o e de este cambio, una entrada de la compuerta b toma el valor de 1. Por lo tanto, su salida cambia a 0, es decir, Q cambia a 0. Ahora bien, ambas entradas de la compuerta NOR a tienen valor 0, por lo que Q toma el valor 1, cambiando el estado del ip-op como se hab dispuesto. a En el caso en que las entrada tomaran valores R = 1 y S = 0 con Q = 1, una de las entradas a la compuerta NOR a toma el valor de 1, por lo que Q toma el valor 0. Despus de que este cambio ocurre, las dos entradas a la e compuerta NOR b tienen valor 0, por lo que Q se vuelve 1. Esto implica que se han operado los cambios adecuados. En forma similar, es posible mostrarse que cada uno de los cambios 63

apropiados de estado suceden para cada conjunto o combinacin de valores o de las variables de entrada permisibles. Ntese que los cambios operados en o las salidas Q y Q no ocurren instantneamente, o al mismo tiempo. Por a ejemplo, el cambio del estado en que Q = 0 (Q = 1) cuando se reciben las entradas R = 0 y S = 1, implica slo que al nal de la operacin Q = 1 o o = 0). Sin embargo, primero cambia Q , tomando el valor de 0, y solo (Q entonces Q cambia su valor a 1. En general, estos cambios ocurren muy rpido, pero siempre requieren un tiempo para realizarse. a En una computadora digital hay un gran nmero de circuitos diferentes, u y stos no tienden a responder al mismo tiempo o con la misma velocie dad. Pero si la computadora debe funcionar apropiadamente, entonces debe mantenerse cuidadosamente un orden secuencial correcto de respuestas de los circuitos. Si se ignora este orden, podr intentarse utilizar la salida de a un circuito antes de que ste complete su cambio de estado. Existen varias e tcnicas utilizadas para mantener la operacin ordenada de una compue o tadora, y para asegurar que todos los circuitos responden en los momentos apropiados. Una tcnica muy importante para mantener la sincronizacin de los cire o cuitos lgicos de una computadora es llamado temporizacin por reloj (o o o simplemente clocking). Un circuito oscilador electrnico, llamado reloj, geo nera un tren de pulsos parecido al que se muestra en la Figura 3.22.
Reloj

T1

T2

T3

T4

T5

T6

T7

Tiempo

Figura 3.22: Un tren de pulsos de reloj. 64

Cuando el pulso est presente, el nivel de la seal corresponde a un valor a n de 1 lgico; cuando el pulso est ausente, corresponde a un valor 0 lgico. o a o Esto es importante, ya que la mayor de los ip-ops se construyen de a tal manera que cambian su estado solo durante el tiempo en que el pulso est presente, como en los tiempo entre 0 y T1 . Por lo tanto, para proveer de a un control basado en un reloj, la construccin del ip-op debe modicarse. o El diagrama de bloques y el circuito que implementa un ip-op RS con seal de reloj se muestra en la Figura 3.23. n
R CLK S Q Q

R a

R1 c Q

CLK

d S b S1

Figura 3.23: Un ip-op RS con seal de reloj. n Las compuertas NOR c y d conforman un ip-op RS ordinario, cuyas entradas son R1 y S1 . Ahora bien, considrense las compuertas AND a y b. e Cuando el pulso de reloj est ausente, la entrada CLK tiene valor 0. Por lo a tanto, las salidas de las compuertas AND a y b tienen valor de 0, y R1 = 0 y S1 = 0. As cuando el pulso del reloj est ausente, el ip-op no puede , a cambiar su estado. Ahora, supngase que el pulso de reloj se encuentra presente. Su nivel o es tal que acta como un valor de 1, por lo que la entrada CLK a las u compuertas AND a y b tiene valor 1. Considrese la compuerta a. Si CLK = e 1 (es decir, el pulso de reloj est presente) y R = 1, entonces R1 = 1. Si a CLK = 1 y R = 0, entonces R1 = 0. Por lo tanto, para los tiempos en que 65

el pulso de reloj est presente, se tiene que: a

R1 = R S1 = S Entonces, si las entradas se aplican durante la presencia de un pulso de reloj, el ip-op cambia su estado, y se comporta como un ip-op RS sin reloj. Cuando el pulso de reloj est ausente, el ip-op no cambia su estado, a sin importar los valores de las variables de entrada R y S. En las siguientes secciones se describen algunos otros tipos particulares de ip-ops, los cuales se consideran todos con seal de reloj. n

3.6.2.

El ip-op D

El ip-op D se disea con una sola entrada. Su diagrama de bloques se n muestra en la Figura 3.24.
D CLK Q Q

D CLK

Q Q

Figura 3.24: Un ip-op D y su implementacin mediante ip-op RS. o Si durante el pulso de reloj D = 1, entonces el estado del ip-op toma el valor de 1 (Q = 1, Q = 0). En forma similar, si durante el pulso de reloj D = 0, entonces el estado del ip-op toma el valor de 0 (Q = 0, Q = 1). Parece que este tipo de circuitos no son muy utiles, pero como se ve ms a a adelante, hay varios circuitos en que el ip-op D resulta de mucha utilidad prctica. a Un ip-op D se construye utilizando una compuerta NOT y un ip-op RS conectados como se muestra en la Figura 3.24. Ntese que cuando D = 0, o 66

entonces R = 1 y S = 0. Esto causa que el estado del ip-op RS tome el valor de 0 (Q = 0). En forma similar, cuando D = 1, entonces R = 0 y S = 1, lo que causa que el estado del ip-op RS tome el valor de 1 (Q = 1).

3.6.3.

El ip-op JK

En ocasiones, es conveniente contar con un ip-op que funcione como un ip-op RS, pero que pueda aceptar como valores de entrada R = 1 y S = 1. Tal ip-op se conoce con el nombre de ip-op JK. En este ip-op, la variable de entrada J tiene la misma funcin que S y la variable de entrada o K tiene la misma funcin que R. Cuando se aplican las entradas J = 1 y o K = 1 durante el pulso de reloj, el ip-op cambia su estado al estado complementario. Esto es, si Q = 1 y se aplica J = 1 y K = 1, entonces el ip-op cambia al estado Q = 0. Similarmente, si Q = 0 y se aplica J = 1 y K = 1, entonces el ip-op cambia al estado Q = 1. El diagrama de bloques de un ip-op JK se muestra en la Figura 3.25, as como su implementacin utilizando un ip-op RS y dos compuertas o AND.
K CLK J Q Q

a R Q Q Q Q

CLK

CLK S

Figura 3.25: Un ip-op JK y su implementacin mediante ip-op RS y o compuertas AND. El ip-op JK funciona de la siguiente manera: supngase que Q = 0, o 67

J = 0 y K = 0. Las salidas de las compuertas AND a y b toman un valor de 0. Por tanto, R = 0 y S = 0, y el estado permanece sin cambio (Q = 0). Ahora, supngase que durante el pulso de reloj se tiene que Q = 0, J = 1 o y K = 0. Esto implica que todas las entradas de la compuerta AND b tienen valor 1, y por tanto, S = 1 para el ip-op RS. Por otro lado, dos entradas a la compuerta AND a tienen valor 0, y por lo tanto, R = 0 para el ip-op RS. Sin embargo, la combinacin de entradas R = 0 y S = 1 causa que el o ip-op RS cambie al estado Q = 1 (con Q = 0). Ntese que una vez que o el cambio de estado ha ocurrido, al menos una entrada de cada compuerta AND es 0, de tal modo que el estado no contina cambiando. u En seguida, supngase que Q = 1 (Q = 0) y que los valores de las o entradas durante el pulso son J = 0 y K = 1. Todas las entradas a la compuerta AND a tienen valor 1, por lo que R = 1. Dos entradas a la compuerta AND b tienen valor 0, por lo que S = 0. La combinacin R = 1 o y S = 0 hace que el ip-op RS cambie de estado a 0 (Q = 0 y Q = 1). Continuando con las combinaciones, se demuestra que el ip-op JK funciona correctamente para todas las combinaciones de entrada y salida. Considrese la operacin del ip-op JK cuando sus entradas son J = 1 e o y K = 1. Supngase que el estado es Q = 1. Durante el pulso de reloj, todas o las entradas para la compuerta AND a tienen valor 1, por lo que R = 1. Por otro lado, ya que Q = 0, al menos una entrada a la compuerta AND b tiene valor 0, y por esto, S = 0. Tal combinacin de valores de entrada al o ip-op RS provocan que ste cambie de estado a Q = 0. e En forma complementaria, supngase que el estado del ip-op JK es o Q = 0, y se tiene la combinacin J = 1 y K = 1 durante el pulso de reloj. Al o menos una entrada a la compuerta AND a tienen valor 0, por lo que R = 0, mientras que todas las entradas a la compuerta AND b tienen valor 1, por lo que S = 1. Tal combinacin de valores de entrada al ip-op RS provocan o que ste cambie de estado a Q = 1. e Aun cuando el circuito de la Figura 3.25 funciona propiamente como ip-op JK para las combinaciones de entrada y salida, un problema puede surgir cuando J = 1 y K = 1. Supngase que el ip-op puede cambiar su o estado en un tiempo mucho menor que el pulso de reloj. Cuando se tiene a las entradas J = 1 y K = 1, el ip-op JK simplemente cambia su estado. Pero como el pulso de reloj puede todav estar presente, el ip-op JK puede a cambiar de nuevo su estado. Esto en la mayor de los casos es indeseable. a 68

Es por esto que ms adelante se discuten circuitos que eliminan este tipo de a comportamiento errtico. a

3.6.4.

El ip-op T

Otro ip-op con una sola entrada es el ip-op T, que se muestra en la Figura 3.26.
T CLK Q Q

T CLK

Q Q

Figura 3.26: Un ip-op T y su implementacin mediante ip-op JK. o Si T = 1 durante el pulso de reloj, el ip-op cambia de estado. Si T = 0, el ip-op permanece en su estado original. La implementacin del ipo op T se muestra tambin en la Figura 3.26. Esta implementacin consiste e o de un ip-op JK cuyas entradas han sido conectadas juntas. Ntese que o cuando T = 0, J = 0 y K = 0, y el estado del ip-op no cambia. Cuando T = 1, entonces J = 1 y K = 1, por lo que el ip-op cambia a su estado complementario.

3.6.5.

Entradas de inicializacin o

Los ip-ops en forma de circuitos integrados frecuentemente cuentan con otras entradas de inicializacin llamadas preset y clear. Cuando se aplica o un valor lgico 1 a la entrada de preset, el ip-op toma el estado Q = 1 o (Q = 0). Cuando se aplica un valor lgico de 0 a la entrada clear, el estado o = 1). Generalmente, las entradas preset del ip-op se vuelve Q = 0 (Q y clear funcionan independientemente de la entrada para el pulso de reloj, y se utilizan para inicializar el estado de los ip-ops antes de realizar un cmputo dado. o 69

Algunas entradas preset y clear se operan en forma diferente a las que se han descrito, en el sentido de que los niveles de voltaje que corresponden a un valor 1 lgico deben aplicarse cont o nuamente a las entradas de preset o clear. Si se desea aplicar un preset, la entrada correspondiente debe entonces tomar un valor 0 lgico. En forma similar, si se desea aplicar un clear, la o entrada correpondiente debe tomar un valor de 0 lgico. o

3.7.

Se ales de reloj n

En la seccin anterior se menciona un problema que puede generarse al o aplicar las entradas J = 1 y K = 1 a un ip-op JK. Si el tiempo que requieren los componentes del ip-op para cambiar fuese ms rpido que a a el periodo de tiempo de un pulso de reloj, la salida podr cambiar varias a veces durante el propio pulso de reloj. Problemas similares puede surgir en otros circuitos de la computadora. Por ejemplo, supngase que la salida de o uno de los ip-ops fuera la entrada de otro, y que una seal se aplica al n primer ip-op de modo que modique su estado; su salida cambia, por lo que la entrada al segundo ip-op cambia. Dependiendo de la velocidad de operacin, y cundo se aplique la seal o a n de entrada al ip-op, el cambio en la entrada del segundo ip-op puede ocurrir en varios momentos. Por ejemplo, puede cambiar antes del nal del pulso de reloj, o puede ocurrir cuando ya ha pasado el pulso; o posiblemente puede cambiar parcialmente al nal del pulso y parcialmente en el siguiente. Si el cambio en la entrada del segundo ip-op ocurre mucho antes que el nal del pulso, entonces el segundo ip-op cambia su estado inmediatamente. Si el cambio en la entrada del segundo ip-op ocurre despus del e pulso de reloj, el segundo ip-op no cambia de estado durante el pulso, sino muy cerca de su nal, por lo que el segundo ip-op podr no experimentar a el cambio requerido de estado. El resultado de todo esto es una operacin o errtica; dependiendo del momento, el ip-op puede o no cambiar su estado a en cierto tiempo. Tal operacin errtica no es permisible dentro de una computadora digio a tal, donde la precisin en las operaciones es preponderante. Se pueden evitar, o sin embargo, los problemas debidos a las diferentes velocidades de los circuitos si la operacin de los ip-ops pudiera modicarse apropiadamente. o Supngase que, como anteriormente se describe, el ip-op puede cambiar o su estado en respuesta a seales de entrada aplicadas durante el pulso de n reloj. Pero la salida del ip-op no cambia hasta despus de que el pulso de e 70

reloj ha pasado. En tal circunstancia, las dicultades se evitan. Considrese e el ejemplo previo, donde la salida de un ip-op se conecta a la entrada de otro ip-op. Durante el pulso de reloj, la salida del primer ip-op no cambia; por lo tanto, la entrada al segundo ip-op no cambia tampoco, y el estado del segundo ip-op permanece sin cambio. Despus de que el pulso e de reloj ha ocurrido, por ejemplo, entre los tiempos T1 y T2 de la Figura 3.22, la salida del primer ip-op, y por tanto la entrada al segundo ip-op, efectivamente cambia. Sin embargo, el estado del segundo ip-op no puede cambiar durante este tiempo, ya que la seal de reloj tiene como valor 0. Al n siguiente pulso de reloj, el segundo ip-op cambia su estado. As cualquier , ambigedad en la operacin ha sido removida (Ntese que el primer ip-op u o o no puede cambiar su estado hasta despus del siguiente pulso de reloj, por e lo que no hay ambigedad en la entrada al siguiente ip-op). u Hay varios tipos de ip-ops que responden de esta manera. Uno de ellos se conoce con el nombre de ip-op de disparo por anco. Otro tipo es el ipop maestro-esclavo. Considrese la operacin de un ip-op RS maestroe o esclavo. De hecho, todos los ip-ops pueden ordenarse en esta conguracin. o La conguracin de tal ip-op, que en realidad consiste de dos ip-ops o RS, se muestra en la Figura 3.27

R Maestro S CLK

Q Q

Q1

R2

R Esclavo S

Q Q CLK

S CLK

Q1

S2

Figura 3.27: Un ip-op RS maestro-esclavo. La salida del primer ip-op (el maestro) es la entrada al segundo ipop (el esclavo). Por lo pronto, ignrese la seal de reloj. El ip-op esclavo o n siempre toma el valor del estado del ip-op maestro. Ntese que Q1 = S2 o y que Q1 = R2 . Por lo tanto, si el estado del ip-op maestro es Q1 = 1, entonces se tiene que R2 = 0 y S2 = 1, de tal modo que el estado del ipop esclavo se vuelve Q = 1. Una situacin similar sucede si el estado del o maestro es Q = 0. 71

Ahora, considrese el efecto de la coneccin de los relojes. La terminal e o de reloj del ip-op maestro se conecta directamente a la seal de reloj. n Sin embargo, la terminal de reloj del ip-op esclavo es la negacin de la o seal de reloj. Durante el pulso de reloj, el maestro puede cambiar su estado, n pero el esclavo no puede hacerlo, ya que a su entrada de reloj se encuentra un 0 lgico. Por lo tanto, su salida no cambia. Despus del pulso de reloj, o e el estado del maestro no puede cambiar, ya que a su entrada de reloj se presenta un valor de 0 lgico. Sin embargo, ahora el esclavo puede cambiar, o ya que tiene un valor 1 lgico en su entrada de reloj. As como se desea, o , la salida slo cambia cuando el pulso de reloj no se encuentra presente. En o general, cuando se labora con circuitos temporizados, se asume que todos ellos disparan por anco o trabajan en forma maestro-esclavo.

3.8.

Registros

En las secciones anteriores se discuten los bloques bsicos de construccin a o de los sistemas de cmputo. Sin embargo, tales bloques bsicos resultan ser o a elementos demasiado simples y pequeos como para describir un sistema n de cmputo completo. Es por eso que en esta seccin se tratan elementos o o de mayor tamao, compuestos por los bloques bsicos, pero que permiten n a describir una computadora digital. En esta seccin se discute un circuito llamado registro (register), que o se utiliza para almacenar un nmero binario. En realidad, se trata de una u simple memoria. En el siguiente cap tulo se desarrolla ms ampliamente el a tema de memorias con mayor capacidad. La informacin se almacena tanto o en registros como en todas las memorias como una secuencia de ceros y unos. En general, esta informacin se le provee al registro de una de dos maneras: o mediante una carga serial o secuencial, en la que un bit se introduce al registro por cada pulso de reloj (utlizando esta carga, si se desea almacenar un nmero binario de 8 bits, se requieren 8 pulsos de reloj para ello) y mediante u una carga paralela, en la que todos los bits se introducen simultneamente a durante un solo pulso de reloj. Los mismos procedimientos para introducir bits a un registro pueden utilizarse para descargar la informacin binaria del registro. Por ejemplo, o supngase que la informacin debe descargarse de un registro con una salida o o serial. Esto implica que cada bit sale por cada pulso de reloj. En una descarga paralela, todos los bits deben proveerse durante el mismo pulso de reloj. 72

Aun cuando evidentemente la operacin paralela es ms rpida que la o a a operacin serial, sta tiene la ventaja de frecuentemente resultar en ahorros o e en el costo de equipo. Por ejemplo, marcar un telfono es una operacin e o serial. Se marca primero un nmero, luego el siguiente, y as hasta haber u marcado todo un nmero telefnico. En una operacin paralela, deber u o o a haber sucientes teclados para marcar cada d gito del nmero telefnico y, u o si se cuenta con sucientes manos, el nmero podr marcarse en un solo u a momento. Similarmente, dentro de las computadoras digitales, hay circuitos sumadores seriales y circuitos sumadores paralelos. En stos ultimos, se tiene e un sumador completo por cada bit (vase la Seccin 3.4), mientras que en e o un sumador serial, se tiene solo un circuito que realiza la suma de cada bit en turno.

3.8.1.

El registro de corrimiento

Un registro de corrimiento es una serie o arreglo de ip-ops cuya operacin se ilustra en la Figura 3.28. o
(1) (2) (3) (4) (5) (6) (7) (8) (9) Entrada 0 Entrada 1 Entrada 1 Entrada 0 Entrada 1 Entrada 1 Entrada 0 Entrada 0 Entrada 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1

Figura 3.28: La informacin binaria contenida en un registro de corrimiento o durante una serie de pulsos de reloj sucesivos. Primero se discute su operacin y en seguida se considera su implemeno tacin. Supngase inicialmente que el registro de corrimiento es capaz de o o almacenar 4 bits, y que cada uno de ellos inicialmente tiene un valor de 0. Si se introduce un bit con valor 0 (por la izquierda del registro), despus de un e pulso de reloj, el valor de todos los bits almacenados es 0 (Figura 3.28, paso 73

1). Ahora, supngase que la siguiente entrada es un bit de valor 1. Despus o e de un pulso de reloj, el registro almacena un valor binario 1000 (Figura 3.28, paso 2); es decir, el bit ms signicativo recibe el valor de 1, y los dems a a bits reciben a su vez un valor 0 procedente de la posicin a su izquierda. Si o se introduce en seguida otro bit con valor 1, en el siguiente pulso de reloj el contenido del registro tiene el valor binario 1100, es decir, cada bit cambia su valor, tomando el valor que recibe por su izquierda (Figura 3.28, paso 3). Esto da la impresin de que el valor binario corre hacia la derecha. De o hecho, el contenido del registro se mueve a la derecha, un bit cada pulso de reloj, mientras que el bit que se introduce por la izquierda ocupa la posicin o del bit ms signicativo. a La operacin del registro de corrimiento contina conforme se mueven o u los bits a la derecha, y se introduce un bit a la izquierda. De hecho, la Figura 3.28 representa un corrimiento serial de 9 bits, que en su orden de entrada, son 011011001. Con cada pulso de reloj la informacin binaria se corre un bit a la deo recha. Cada vez que esto ocurre, el bit menos signicativo se pierde. Se supone que tal informacin puede ser utilizada por otro dispositivo digital o de la computadora. Partiendo de la descripcin anterior, a continuacin se describe la conso o truccin de un registro de corrimiento. La Figura 3.29 muestra dos impleo mentaciones sencillas para el registro de corrimiento, una implementada con ip-ops JK y la otra con ip-ops D. Ntese que estas implementaciones o solo permiten un corrimiento de la informacin binaria hacia la derecha. o Considrese la implementacin con ip-ops JK, suponiendo que el ese o tado de inicio de todos los ip-ops es 0. Supngase que la primera entrada o es un 0. Entonces J1 = 0 y K1 = 1. Por lo tanto, el estado del ip-op ms a a la izquierda permance siendo Q1 = 0 despus del primer pulso de reloj. e (Ntese que se supone el uso de ip-ops maestro-esclavo o de disparo por o anco.) Ya que Q1 = 0 y Q 1 = 1, entonces J2 = 0 y K2 = 1. As el estado , del segundo ip-op permanece en el estado Q2 = 0, y de forma similar, el estado del tercer ip-op permanece siendo Q3 = 0. Ahora bien, supngase que la siguiente entrada al primer ip-op JK es o un 1. En tal caso, se tiene que J1 = 1 y K1 = 0. Entonces, el estado del primer ip-op debe cambiar a Q1 = 1. Sin embargo, Q1 no cambia de valor hasta despus de que el pulso de reloj ha pasado. Durante el pulso de reloj e 74

Q1 Entrada J1 K1 CLK Q Q J2 K2 Q Q

Q2

Q3

J3 K3

Q Q

Q1 Entrada D1 Q D2 Q

Q2

Q3

D3

CLK

Figura 3.29: Dos registros de corrimiento de tres bits. Q1 = 0, lo que implica que los otros dos ip-ops no cambian de estado. Cuando ocurre el siguiente pulso de reloj, entonces el estado del primer ip-op cambia a Q1 = 1 y Q 1 = 0, lo que forza que el estado del segundo ip-op cambie a Q2 = 1. Sin embargo, tal salida no ocurre hasta despus e del pulso de reloj (antes de esto Q2 = 0). Por tanto, el estado del tercer ip-op no cambia. Por supuesto, el estado del primer ip-op durante este tiempo se establece a partir de la entrada. Procediendo de esta manera, la informacin binaria viaja hacia la deo recha con cada pulso de reloj, y las entradas sucesivas establecen el estado del ip-op ms a la izquierda. a Por otro lado, si Q3 se toma como salida, entonces un solo bit sale del registro con cada pulso de reloj. De hecho, este es un ejemplo de salida serial. Pero si las tres terminales Q1 , Q2 y Q3 se utilizan simultneamente a como salidas, se tiene una salida en paralelo. Por lo tanto, el registro de corrimiento basado en ip-ops JK de la Figura 3.29 puede utilizarse con entrada serial y para salida tanto serial como paralela (o hasta ambas). Si la entrada es serial y la salida paralela, se tiene un convertidor de serie a paralelo. La operacin del registro de corrimiento basado en ip-ops D de la o 75

Figura 3.29 es esencialmente igual, excepto por supuesto, en el tipo de ipops utilizados. Recurdese que el estado de un ip-op D despus del pulso e e de reloj corresponde al valor binario de su entrada. Si se desea incrementar el nmero de bits en un registro, solo se necesita aadir ip-ops a la derecha. u n En una computadora real, los registros de corrimiento son frecuentemente ms verstiles. A continuacin, se discute el diseo de un registro de a a o n corrimiento que puede ser controlado para realizar varias funciones. Durante su operacin normal, se proveen entradas por la izquierda y se van recorrieno do hacia la derecha con cada pulso de reloj, un operacin ordinaria que ya se o ha descrito. Sin embargo, se desea tambin que sea capaz de aceptar entrae das por la derecha, mientras que el registro recorre sus bits a la izquierda. En este caso, funciona como un registro de corrimiento ordinario, excepto que funciona de derecha a izquierda. Adems en ocasiones no se desea que a el registro recorra sus bits con cada pulso de reloj; es decir, se desea que el registro sea capaz de retener toda la informacin binaria almacenada en o l, sin cambios. Tambin es deseable que se pueda limpiar al registro, es e e decir, poner todos sus estados con valor de 0. Finalmente, se desea que los datos puedan ingresar en paralelo al registro. Los modos de operacin de los ip-ops del registro a disear se controlan o n mediante una serie de seales. Por simplicidad, supngase que hay cuatro de n o tales seales: c0 , c1 , c2 y c3 . Si se desea un corrimiento ordinario a la derecha, n los valores de las seales de control sern c0 = 1, c1 = c2 = c3 = 0. Si se desea n a un corrimiento a la izquierda, entonces c0 = 0, c1 = 1, c2 = c3 = 0. Para entrada paralela, c0 = c1 = 0, c2 = 1, c3 = 0. Si se desea limpiar el registro, entonces c0 = c1 = c2 = 0, c3 = 1. Si no se desea realizar ningn cambio en u la informacin almacenada en el registro, entonces c0 = c1 = c2 = c3 = 0. o Un circuito para este registro controlado se muestra en la Figura 3.30. Bsicamente, consiste en el conjunto de ip-ops D mostrado en la Figura a 3.29. Se discute a continuacin cmo las seales de control producen la o o n operacin deseada. Para simplicar la explicacin, se redibuja el diagrama o o para una sola etapa, en la Figura 3.31. Obsrvese la Figura 3.31. Supngase que todas las seales c0 , c1 , c2 y e o n c3 tienen valor 0. Entonces, todas las entradas a la compuerta OR e tienen valor 0, por lo que una de las entradas a la compuerta AND f tiene valor 0. Ntese que la otra entrada tiene conectada la seal de reloj, y que la salida o n de f se conecta a las terminales de reloj de cada uno de los ip-ops D. De 76

X1

Q1X2

Q 2X 3

Q3

a1 Q b1 d1 D Q c1

a2 Q b2 d2 D Q c2

a3 Q b3 d3 D Q c3

e f CLK c0 c1 c2 c3

Figura 3.30: Un registro.


X Entrada Q Salida
Paralela Paralela Salida Izquierda

Entrada Izquierda

a Q b d D Q c

Salida Derecha

Entrada Derecha

e f CLK c0 c1 c2 c3

Figura 3.31: Una etapa del registro. 77

tal modo, para este conjunto de seales de control, ninguna seal de reloj n n alcanza a los ip-ops, y por tanto, el contenido del registro no cambia con los pulsos de reloj. El contenido del registro se preserva. Si cualquiera de las seales c0 , c1 , c2 o c3 tienen un valor de 1, entonces el pulso de reloj se aplica n a las terminales correspondientes de los ip-ops, a n de generar cambios en sus estados. Ahora, supngase que c0 = 1 y que c1 = c2 = c3 = 0. Entonces, la salida o de la compuertas AND b y c tendrn valor de 0, mientras que la salida de la a compuerta AND a tomar el valor de la entrada izquierda. As esta entrada a , se convierte en la entrada para el ip-op D. Viendo el diagrama completo del registro en la Figura 3.30, para la condicin c0 = 1 y c1 = c2 = c3 = 0, o todo el circuito funciona como un registro de corrimiento hacia la derecha basado en ip-ops D que se muestra en la Figura 3.29, ya que cada ip-op recibe su entrada de la etapa anterior inmediatamente a su izquierda. Ahora, supngase que las seales de control sean c0 = 0, c1 = 1 y o n c2 = c3 = 0. Entonces, en la Figura 3.31, una entrada de las compuertas AND a y c tiene valor 0, por lo que las salidas de tales compuertas toma el valor 0. Solamente la compuerta AND b tiene un valor de 1 a su entrada, por lo que su salida tomar el valor que haya en la entrada derecha. De a tal modo, la entrada al ip-op D se conecta efectivamente a la entrada derecha. Viendo el diagrama completo de la Figura 3.30, si c0 = 0, c1 = 1 y c2 = c3 = 0, entonces el circuito acta como un registro de corrimiento u basado en ip-ops D, slo que ahora el bit de entrada proviene de la etapa o anterior a la derecha, y el corrimiento se realiza hacia la izquierda. Supngase ahora que las seales de control sean c0 = c1 = 0 y c2 = 1 o n y c3 = 0. Usando el mismo razonamiento, ntese en la Figura 3.31 que o la entrada al ip-op se conecta ahora a la entrada paralela X mediante la compuerta AND c. En la Figura 3.30, puede verse que el circuito no funciona ahora como un registro de corrimiento, ya que cada ip-op D se conecta efectivamente a su propia entrada paralela X, y despus de que el pulso de e reloj ocurre, almacena tal entrada como su estado. De este modo, se tiene un registro con carga en paralelo. Finalmente, considrese la secuencia de control c0 = c1 = c2 = 0 y e c3 = 1. Esto implica que una de las dos entradas a cada compuerta AND tiene valor de cero (Figura 3.31). Por lo tanto, la entrada a cada ip-op D tiene valor de 0. Ya que c3 = 1, en cualquier momento que el pulso de reloj ocurra, la seal de reloj se aplicar en las entradas de reloj de cada n a 78

ip-op D. Al aplicarse la seal de reloj y teniendo una entrada D = 0, el n estado siguiente de cada ip-op ser 0. Obsrvese la Figura 3.30. Si c3 = 1 a e y c0 = c1 = c2 = 0, entonces al siguiente pulso de reloj el estado de todos los ip-ops D tendr el valor de 0. El registro se ha limpiado, como se deseaba a en un principio. Habiendo discutido todos los valores permisibles de las seales de conn trol y mostrado que el registro tiene un funcionamiento como se plante en o un principio, se discuten a continuacin las seales de salida del registro. o n Considrese la salida etiquetada Salida Derecha en la Figura 3.31. Se trata e de la salida del ip-op ms a la derecha del registro en la Figura 3.30. Si a se recorre hacia la derecha el contenido del registro, y se observa los valores de esta salida, el registro funciona como un registro de corrimiento simple. En forma similar, si se desea que el registro funcione como un registro de corrimiento pero ahora a la izquierda, entonces la salida a observar es la salida del ip-op ms a la izquierda del registro. Ntese que en la Figura a o 3.31, la salida etiquetada Salida Izquierda se conecta a la salida de tal ipop en la Figura 3.30. En la Figura 3.30, las salidas de todos los ip-ops se conectan a terminales etiquetadas Q1 , Q2 y Q3 . De este modo, una salida paralela del registro puede obtenerse en cualquier momento. Como se ha discutido antes, tambin hay entradas paralelas X1 , X2 y X3 , por lo que este registro puede e funcionar sencillamente como un registro de carga y descarga en paralelo. Ntese que las entradas pueden cargarse en paralelo, y mediante manipular o las seales de control, proveer de una salida serial. Por tanto, este registro n puede utilizarse como un conversor paralelo a serial. De igual forma, puede utilizarse como conversor serial a paralelo.

3.9.

Contadores

Un circuito digital de gran utilidad se conoce con el nombre de contador. Tal circuito se utiliza para contar el nmero de pulsos que se le aplican. Los u contadores se utilizan en las computadoras para poder seguir el nmero de u operaciones que se han realizado. Tambin se les utiliza en muchas aplicacioe nes no computacionales. Por ejemplo, supngase que toda persona que entra o al metro pasa por un torniquete. Cada vez que alguien entra, el torniquete produce un pulso mediante un interruptor. El contador se utliza entonces para determinar el nmero de personas que han pasado por el torniquete. u 79

Un contador real produce un nmero binario equivalente a su cuenta. A u continuacin, se discute un circuito digital capaz de contar hasta 8 pulsos de o reloj. Despus de llegar a la cuenta de 7, el siguiente evento a contar produce e que este contador reinicie con un valor de 0, y comience de nuevo la cuenta. Es por ello que tal contador se conoce con el nombre de contador mdulo 8. o Esta forma de operacin es comn en muchos contadores. Por ejemplo, el o u odmetro de un automvil es un tipo de contador, que va de 00000 a 99999 o o kilmetros. Despus de que se ha alcanzado tal l o e mite, el odmetro reinicia o la cuenta en 00000. Un circuito para un contador mdulo 8 utilizando ip-ops JK se muestra o en la Figura 3.32.

J2

Q2

J1

Q1

J0

Q0

K2

Q2

K1

Q1

K0

Q0

Entrada

Q2

Q1

Q0

Salidas

Figura 3.32: Contador mdulo 8 usando ip-ops JK. o Supngase que el estado de todos los ip-ops inicia en 0. Ntese que o o los pulsos de entrada se aplican en las terminales de reloj de todos los ipops, as como a las entradas J0 y K0 . Cuando se aplica el primer puslo, J0 = K0 = 1 durante el pulso. Por lo tanto, Q0 toma el valor de 1 despus e del pulso. Se supone de nuevo aqu el uso de ip-ops maestro-esclavo o disparados por anco. Por tanto, Q0 no pasa de 0 a 1 hasta que el pulso ha pasado. As durante el pulso, J1 , K1 , J2 y K2 permanecen con valor 0, por , lo que Q1 y Q2 tambin permanecen en 0. De este modo, la salida despus e e del primer pulso de entrada es Q2 = 0, Q1 = 0 y Q0 = 1, 0012 = 110 , como o se supone debe ser. Esto indica que se ha contado un pulso.

80

Cuando un segundo pulso se aplica en la entrada y Q0 = 1, las entradas al segundo ip-op toman los valores J1 = K1 = 1. Por tanto, Q1 cambia de estado hasta que el pulso haya pasado. Adems, durante ese tiempo, Q0 a cambia de 1 a 0 ya que J0 = K0 = 1 durante tal pulso. Ntese que durante o el segundo pulso, J2 = K2 = 0, ya que la entrada de Q1 a la compuerta AND es 0 hasta despus que el pulso haya pasado. De modo que despus e e del segundo pulso, se tiene que Q2 = 0, Q1 = 1 y Q0 = 0, 0102 = 210 . o Cuando un tercer pulso se aplica a la entrada, Q0 cambia de nuevo su estado de 0 a 1 despus del pulso. Sin embargo, Q1 no cambia, ya que durante e el pulso, Q0 = 0. Tambin, la entrada conectada a Q0 a la compuerta AND e durante el pulso tiene valor 0, por lo que J2 = K2 = 0, lo que implica que Q2 = 0. As despus del tercer pulso, se tiene que Q2 = 0, Q1 = 1 y Q0 = 1, , e o 0112 = 310 . Ahora, supngase que llega un cuarto pulso a la entrada. Durante el o tiempo que ese pulso se encuentra presente, Q0 = 1 y Q1 = 1, por lo que J2 = K2 = 1, y entonces Q2 = 1. Ya que Q0 = 1 durante el pulso, entonces J1 = K1 = 1 durante el pulso. Por lo tanto, el segundo ip-op cambia su estado despus del pulso. As despus del pulso Q1 = 0. Por tanto, al nal e , e se tiene que Q2 = 1, Q1 = 0 y Q0 = 0, 1002 = 410 . o Continuando as se puede detallar que el contador llegar al valor de , a 1112 = 710 , para recomenzar con el valor de 0002 = 010 despus. Ntese e o que los contadores de este tipo pueden ensamblarse de modo que pueden contar hasta cualquier potencia de 2. Sin embargo, tambin es posible disear e n contadores que cuenten hasta el valor que se desee.

3.10.

Detectores de secuencia y generadores de secuencia

En esta seccin se describen algunos circuitos conocidos como detectores o de secuencias. Estos circuitos dan como salida 1 si se les introduce una secuencia espec ca de ceros y unos. De otra manera, su salida es 0. Los detectores de secuencia no son unicamente utilizados en computado ras digitales. Pueden usarse, por ejemplo, en cerrojos de combinacin digital. o Supngase que se cuenta con un control de radio para abrir una puerta. Debe o abrir slamente a una seal de radio, y a ninguna otra. El radiotransmisor, o n usando un detector de secuencia, transmite la secuencia apropiada. 81

Considrese un circuito detector de secuencia que da como salida 1 si e la secuencia 010 se le introduce (Figura 3.33). Ya que se trata de ip-ops maestro-esclavo, slo responden a seales aplicadas durante el pulso de reloj, o n y solo cambian sus estados despus del pulso de reloj. Se supone que una e seal de entrada se aplica al detector de secuencia durante cada pulso de n reloj. Si el nivel de la seal de entrada durante el pulso tiene valor 0, entonces n se introduce un 0. De forma similar, si el nivel de la seal de entrada tiene n valor 1 durante el pulso de reloj, se introduce un 1.

a b D1

Q1 D2 Q1

Q2 d Q2
Salida

Entrada

CLK

Figura 3.33: Detector de la secuencia 010. Ahora supngase que un 0 se ha introducido. Entonces, al menos una o entrada de la compuerta AND b debe tener valor 0. Por lo tanto, D1 tiene valor 0, y por lo tanto, despus del pulso de reloj, Q1 = 0, Q = 1. Adems, e a 1 ya que la entrada fue 0, al menos una entrada a la compuerta AND c es tambin 0, por lo que D2 = 0, y en el siguiente pulso de reloj Q2 = 0. Ya e que una entrada a la compuerta AND d tiene valor 0, entonces su salida es 0. Supngase que en el siguiente pulso de reloj, la entrada tiene valor 1. o Ahora, las tres entradas de la compuerta AND c tienen valor 1, y por lo tanto, D2 toma el valor de 1. Para el siguiente pulso de reloj, Q2 = 1 y , Q = 0. As una entrada a la compuerta AND d tiene valor 1. Sin embargo, 2 la otra entrada tiene valor 0, ya que es el complemento de la entrada. Por tanto, la salida contina siendo 0. u

82

Supngase ahora que durante el siguiente pulso de reloj, se introduce un o 0. Q2 no puede cambiar hasta que el pulso haya pasado. Entonces, durante el pulso de reloj, la entrada inferior de la compuerta AND d tiene valor 1, ya que es el complemento de la entrada. Por tanto, la salida toma el valor de 1. Si se procede de esta forma, con todas las posibles secuencias, se puede demostrar que slo la secuencia 010 provoca una salida 1, y ninguna o otra. De tal modo, este circuito funciona efectivamente como un detector de secuencia. Ocasionalmente, se requiere generar secuencias de pulsos. Esto puede lograrse mediante un dispositivo digital conocido como generador de secuencias. Por ejemplo, tal dispositivo puede usarse en un radiotransmisor para abrir una puerta. Los generadores de secuencias consisten de interconexiones de ip-ops y compuertas. El contador de la Figura 3.32 es un generador de secuencias. Si Q0 se toma como salida, entonces se produce la secuencia 01010... Si Q1 es la salida, la secuencia es 00110011... Si Q2 es la salida, la secuencia es 000011110000... Ahora bien, si se utiliza una interconexin o mediante compuertas de estas tres seales, se puede obtener la secuencia n deseada de cero y unos.

83

84

Cap tulo 4

Memorias
Todas las computadoras digitales tienen una memoria que se usa para almacenar tanto programas como datos. En este cap tulo se discuten diferentes formas de memoria que se utilizan para almacenar diversas cantidades de datos. En la seccin 3.8 ya se menciona un tipo muy sencillo de memoria: o el registro. La memoria que almacena un programa en ejecucin o los datos para tal o programa se conoce como memoria principal o en ocasiones memoria de trabajo. Adems, hay otro tipo de memoria conocida como secundaria, auxiliar a o perifrica, que permite almacenar programas y datos para su uso futuro. e En general, este tipo de memoria consiste de cintas magnticas y discos. e Cuando se desea ejecutar un programa almacenado en memoria secundaria, es necesario leerlo de la cinta o el disco, y cargarlo en la memoria principal. Los registros, como un tipo de memoria que se ha discutido anteriormente, almacenan datos binarios. Sin embargo, hay otras formas de memoria creadas a partir de elementos semiconductores, como por ejemplo, la memoria de slo lectura (read-only memory o ROM), que almacena permao nentemente sus datos y no pueden ser (fcilmente) cambiados. a Actualmente, las memorias semiconductoras se fabrican mediante tecnolog de circuitos integrados, y son generalmente rpidas y pequeas. Otros a a n tipos de memorias utilizan materiales magnticos y pticos, y son ms lentas e o a que las memorias semiconductoras. Sin embargo, las memorias magnticas e y pticas tienen ventajas sobre las memorias semiconductoras: (a) tienen o una mayor capacidad de almacenamiento de informacin binaria, y (b) en o 85

el evento de una falla de corriente, no pierden la informacin que almaceo nan. A esta capacidad se le conoce como no volatilidad, en contraste con las memorias semiconductoras, que al fallar la fuente de alimentacin elctrica o e s pierden sus contenidos. Son memorias voltiles. a Las memorias se clasican por la forma en que se les escribe o lee informacin binaria. De hecho, los contenidos binarios almacenados en una o memoria se organizan en grupos de bits llamados palabras. Cada palabra se almacena en una localidad de memoria llamada direccin. Cuando cada o palabra se almacenan una tras otra, se dice que el almacenamiento es de tipo secuencial. En tal caso, para poder acceder (leer o escribir) la n-sima e palabra, es necesario pasar por todas las n-1 palabras anteriores. En general, las memorias con acceso secuencial tienden a ser muy lentas. En contraste, la forma ms rpida de acceso (lectura o escritura) de a a memoria es el acceso aleatorio (random access), que es caracter stico de la memoria RAM (random access memory). En este tipo de memoria, cualquier localidad de memoria puede direccionarse sin considerar ninguna secuencia u orden espec co. Ya que la lectura y escritura se hace velozmente, la RAM se utiliza siempre cuando la velocidad de acceso a los datos es importante. Este cap tulo describe brevemente todos estos tipos de memoria. La discusin se inicia con las memorias semiconductoras, particularmente con las o memorias de acceso aleatorio (RAM).

4.1.

Memorias de acceso aleatorio RAM

Las memorias de acceso aleatorio (RAM), construidas mediante circuitos semiconductores, son utilizadas como la memoria principal de la mayor de a las computadoras digitales. Las memorias se organizan en palabras. Cada palabra consta de un nmero jo de bits, que pueden tomar los valores u binarios de 0 y 1. Por ejemplo, una palabra de memoria puede ser de 8 bits de longitud. Una palabra puede representar un nmero dentro de un u clculo, o puede representar una instruccin en un programa. De hecho, a o una operacin t o pica que involucra a la memoria es la suma de dos valores numricos contenidos en dos palabras con diferentes direcciones en memoria. e El resultado puede a la vez almacenarse en una tercera direccin. o La localidad de una palabra en una memoria se conoce con el nombre de direccin. Cuando se almacenan datos en cada bit de una palabra, se dice o que los datos almacenados se escriben en memoria. Similarmente, cuando 86

los datos almacenados en cada bit de una palabra se extraen de la memoria, se dice que se leen de la memoria. La palabra que ha sido escrita o leida de la memoria, para tal efecto, se dice que ha sido direccionada, es decir, se encuentra su localidad en la memoria ya sea para modicarse (escribirse) o inspeccionarse (leerse). Aun cuando hay variaciones al respecto, resulta conveniente suponer que cada bit de una palabra se almacena en un ip-op, es decir, que hay un ipop por separado cuyo estado determina el almacenamiento de cada bit en la memoria. En computadoras pequeas, las palabras comnmente contienen n u 8, 16 32 bits. En grandes computadoras, las palabras contienen 16, 32, 64 o o ms bits. En general, se intenta que la memoria sea capaz de almacenar a un nmero grande de palabras. u De hecho, el almacenamiento de un solo bit involucra ms que un simple a ip-op. Debe haber previsiones indicando si la informacin binaria debe o ser escrita o leida. En general, existe una terminal del circuito de memoria etiquetado read/write. Cuando se coloca un valor de 1 en tal terminal, la memoria almacena el dato binario (se escribe en memoria); cuando se coloca un valor de 0 en la terminal, la memoria provee el dato binario (se lee la memoria). Tambin debe tomarse en consideracin el direccionamiento de e o cada palabra; es decir, que al leer o escribir una palabra en memoria, debe proversele una direccin de memoria. e o Una celda binaria es la unidad bsica de memoria, y se utiliza para ala macenar un solo bit. Adems de contener el valor binario, tambin considera a e seales binarias para su lectura y escritura, as como para su direccionamienn to. La Figura 4.1 muestra el diagrama de bloque de una celda binaria. Ntese o que cuenta con cinco terminales: una entrada (para la escritura del bit), una salida (para la lectura del bit), una terminal read/write, una terminal de direccionamiento y una entrada de reloj. La Figura 4.1 tambin muestra el circuito digital de una celda de mee moria usando un ip-op RS. Considrese su operacin. Para que el circuito e o funcione, debe tenerse un valor 1 en la terminal A (de direccionamiento). De no ser as entonces al menos una entrada de las compuertas AND c, d y e , tiene un valor de 0, y por lo tanto, R = 0 y S = 0, por lo que el ip-op no puede cambiar su estado: no puede escribirse en la celda binaria. Adems, a la salida tiene valor 0. Por lo tanto, el contenido de la celda de memoria tampoco puede leerse. 87

R/W
Entrada

I A

O CLK

Salida

R/W

c
Entrada

R S

Q Q

Salida

CLK

Figura 4.1: Celda binaria en diagrama de bloque e implementacin usando o ip-op RS.

88

Ahora bien, supngase que la celda ha sido direccionada, es decir, hay o un valor de 1 en su terminal A. Tambin supngase que se desea escribir un e o bit en ella, de modo que se coloca un valor de 1 en su terminal R/W. De este modo, dos de las entradas a las compuertas AND c y d tienen valor 1. Supngase que se desea almacenar (escribir) un 1. Entonces, se coloca o tal valor en la terminal de entrada. De este modo, las tres entradas de la compuerta AND d tienen valor 1, lo que hace que S = 1. Sin embargo, al menos una entrada a la compuerta AND c tiene valor de 0, por lo que R = 0. Dado que R = 0 y S = 1, el ip-op cambia cuando ocurra el pulso de reloj, ponindose en estado Q = 1. De este modo, se ha almacenado un 1 en la e celda. De manera similar, si se tienen valores de 1 en las terminales A y R/W, y la entrada tiene valor 0, entonces R = 1 y S = 0, por lo que se almacena un 0 en la celda de memoria. Supngase ahora que se desea leer el bit almacenado en la celda de o memoria. Hay un valor de 1 en la terminal A, pero un valor 0 en la terminal R/W, por lo que al menos una entrada de las compuertas AND c y d tiene valor 0, y entonces R = 0 y S = 0, por lo que la informacin almacenada no o cambia. Sin embargo, dos entradas a la compuerta AND e tienen valor de 1, por lo que la salida tendr el valor Q, que corresponde al bit almacenado a en la celda binaria. Una memoria real consiste de muchas celdas binarias organizadas en palabras. La Figura 4.2 muestra una memoria compuesta de cuatro palabras de cuatro bits cada una (en general, el nmero de palabras y el nmero de u u bits por palabra no necesariamente son iguales). Ntese la notacin usada. Se o o han aadido sub n ndices a la terminal A, de direccin, de cada celda binaria. o Estos sub ndices indican el nmero de palabra y la posicin del bit en la u o palabra que la celda ocupa en la memoria. Por ejemplo, los sub ndices 1,0 indican la palabra nmero 1, bit nmero 0. Del mismo modo, 2,1 indica u u palabra 2, bit 1. Cada palabra se direcciona utilizando una terminal de direccin. Ntese o o que todas las terminales A de las celdas de memoria pertenecientes a la misma palabra estn conectadas juntas. As si un valor 1 se coloca en la a , terminal de direccin 0 y se colocan valores de 0 en las dems terminales, o a entonces se direccionan todas las celdas de la palabra 0. Ninguna otra de las celdas de memoria se direccionan. De manera similar, si se coloca un valor 1 en la terminal de direccin 2 con valores 0 colocados en las dems terminales o a 89

Entradas 0 Read/Write R/W I A0,0 0 R/W I A1,0 1 Direcciones R/W I A2,0 2 R/W I A3,0 3 O I A3,1 R/W O I A3,2 R/W O I A3,3 R/W O O I A2,1 R/W O I A2,2 R/W O I A2,3 R/W O O I A1,1 R/W O I A1,2 R/W O I A1,3 R/W O O I A0,1 R/W O I A0,2 R/W O I A0,3 R/W O 1 2 3

1 Salidas

Figura 4.2: Una memoria de cuatro palabras de cuatro bits. La seal de reloj n se omite por claridad.

90

de direccin, entonces todas las celdas de la palabra 2 se direccionan y o ninguna otra celda en la memoria. Recurdese que cuando una celda de e memoria no se direcciona, no pierde su informacin almacenada. o Ntese que el nmero de terminales de entrada es igual al nmero de o u u terminales de salida, y al nmero de bits en una palabra. Ya que se utilizan u palabras de cuatro bits, hay cuatro terminales de entrada. Las terminales read/write de todas las celdas estan conectadas. Si se desea almacenar una palabra (de cuatro bits) en una localidad de memoria cuya direccin es 2, o entonces debe colocarse un 1 en la terminal read/write y en la terminal de direccin nmero 2 (se debe colocar un valor de 0 a todas las dems o u a terminales de direccin). Despus del siguiente pulso de reloj, el estado de o e todos los ip-ops en la palabra 2 ser igual a los valores colocados en sus a respectivas terminales de entrada. Por lo tanto, la palabra de cuatro bits de entrada ha sido almacenada en la direccin 2. Ntese que todas las terminales o o de reloj deben conectarse a un reloj maestro. Tal conexin se omite en el o diagrama de la Figura 4.2, para evitar sobrecargar el diagrama. En seguida se describe cmo se lee una palabra de una localidad de o memoria. Hay una terminal de salida por cada bit de todas las palabras. As para esta memoria, hay cuatro terminales de salida. La salida de una , celda de memoria ser 0 a menos que haya tanto un valor de 1 en su terminal a de direccin, como un 0 en la terminal read/write. Supngase que se coloca o o un valor de 1 en la terminal de direccin 3 y 0 en todas las dems terminales o a de direccin. Adems, un 0 se coloca en la terminal read/write. Obsrvese la o a e compuera OR a. Tiene cuatro entradas, cada una de las cuales corresponde al bit 0 de cada palabra en la memoria. Sin embargo, las salidas del bit 0 de las celdas de memoria 0, 1 y 2 tienen un valor de 0, ya que estas palabras no estn direccionadas. Por lo tanto, la salida de la compuerta OR a es igual al a valor almacenado en el bit 0 de la palabra 3. As cuando se coloca un valor , 0 en la terminal read/write, las terminales de salida tendrn los valores de a los bits almacenados en la palabra que haya sido direccionada. Este tipo de lectura se conoce con el nombre de no-destructiva ya que no remueve o borra la informacin almacenada en la memoria. La palabra o permanece almacenada hasta que se sobreescribe. Una palabra almacenada permanece sin cambios a menos que se coloque un valor de 1 en la terminal read/write, y que tal palabra sea direccionada. En tal caso, los datos binarios colocados en las terminales de entrada reemplazan a la palabra almacenada.

91

En la memoria de la Figura 4.2 se tiene una terminal de direccin sepao rada por cada palabra en la memoria. Si esta memoria fuera fabricada en un circuito integrado, deber tener una terminal por cada direccin. Ya que a o las memorias normalmente contienen una cantidad relativamente grande de palabras, se requerir de igual nmero de terminales para su direccionaa u miento. Esto es, en la realidad, indeseable. El circuito integrado tendr que a fabricarse demasiado grande para albergar todas las terminales necesarias, introduciendo a la vez otros problemas relacionados, como aqullos debidos e a la conectividad y al costo de fabricacin. Es por ello que se hace necesario o hallar una forma en que se pueda realizar el direccionamiento de una gran cantidad de localidades de memoria, pero sin incluir un gran nmero de u terminales. Para reducir el nmero de terminales externas, la direccin puede darse u o como un nmero binario. Por ejemplo, en el caso de haber tres terminales u de direccin, stas pueden usarse para indicar hasta ocho direcciones: 000, o e 001, 010, 011, 100, 101, 110 y 111. En forma general, si hay N terminales de direccin, entonces se pueden direccionar hasta 2N localidades de memoo ria. Para la memoria de la Figura 4.2, se requieren entonces dos terminales de direccin. Aunque esto no parece mucho, para cantidades grandes de o palabras en memoria, el ahorro es ms dramtico. Por ejemplo, con 16 tera a minales para direccionamiento, se puede direccionar hasta 65,536 palabras (o simplemente, 64k palabras). Dentro del circuito integrado, cada palabra debe tener una terminal de direccin separada como se indica en la Figura 4.2, de tal modo que es o necesario contar con una lgica integrada en el circuito tal que convierta las o direcciones de entrada en binario a seales individuales para las terminales n de direccin. En la Figura 4.3 se muestra un circuito que controla cuatro o terminales internas a partir de dos entradas de direccin binarias. o La direccin binaria se introduce por la terminales a0 y a1 . La forma del o nmero binario es a1 a0 . Si a1 = 1 y a0 = 0, entonces la direccin binaria es u o 102 . Ntese que estas entradas controlan el estado de los ip-ops mediante o conectarse a las entradas D0 y D1 . Despus de un pulso de reloj, se tiene e que Q0 = a0 y Q1 = a1 . Tales valores se pasan a las compuertas AND. Por ejemplo, la compuerta AND a slo puede tener una salida con valor 1 si o Q0 = Q1 = 0, es decir, si a0 = a1 = 0 durante el pulso anterior. En el caso de este ejemplo, se tiene que la compuerta AND c es la unica que tiene una salida 1 para Q1 = 1 y Q0 = 0, lo que coloca un valor de 1 en la terminal interna de direccin 2 (102 = 210 ). Todas las dems terminales de direccin o a o 92

a
Direcciones Binarias Externas

D1

Q1 Q

Figura 4.3: Un decodicador de direccin. Las seales de reloj se omiten. o n interna tienen un valor 0. Por tanto, el circuito de la Figura 4.3 se conoce como decodicador de direccin. o De hecho, el decodicador de la Figura 4.3 no requiere necesariamente contener ip-ops. Esto se utilizan con el slo propsito de almacenar la dio o reccin, dado que en ocasiones, la direccin binaria puede estar presente por o o un periodo corto de tiempo, aun cuando se requiera contar con la direccin o por un tiempo mayor. En tal caso, los ip-ops resultan utiles.

4.2.

Memorias de solo lectura ROM

La memoria RAM descrita en la seccin anterior se disea para poder o n escribir y leer informacin binaria de ella. Sin embargo, en muchas ocasiones o no es necesario cambiar la informacin binaria almacenada una vez que o sta se introduce a la memoria. Es decir, la informacin binaria se escribe e o una vez, y no se cambia ni reescribe. Para este tipo de comportamiento de la memoria, resulta complicado el uso de la RAM. Es por ello que para aplicaciones en las que el contenido de la memoria no cambia durante su funcionamiento, se preere el uso de memoria ROM (read-only memory). La memoria ROM puede utilizarse para almacenar informacin binaria que se o utiliza repetitivamente, como tablas de datos o instrucciones comnmente u utilizadas. La memoria ROM es no-voltil: la informacin que se almacena a o en ella no desaparece cuando se le deja de suministrar energ elctrica. a e

93

Terminales de direccion interna

D0

a
0

Hay varios tipos de memorias ROM. En la ROM ordinaria, la informacin o binaria se almacena durante la fabricacin del circuito. El usuario provee al o fabricante de la informacin binaria que requiere, y la ROM se fabrica bajo o tal especicacin. Una vez escrita, la informacin binaria no puede perderse o o ni modicarse. Est grabada en piedra. a La ROM programable (programmable ROM PROM) es otra forma o de ROM en la cual, despus de su fabricacin, el usuario puede escribir e o informacin binaria una vez, y a partir de ello, la informacin binaria queda o o permanentemente almacenada, y resulta muy dif cambiarla de nuevo. cil La ROM programable y borrable (erasable PROM EPROM) es un tero cer tipo de ROM, que tiene la posibilidad de ser modicada despus de su e fabricacin, y borrarse al ser afectada por una corriente elctrica (electricably o e erasable PROM EEPROM) o por su exposicin a rayos ultravioleta (ultrao o violet erasable PROM UVEPROM). Sin embargo, los procesos de escritura o y borrado son extremadamente lentos comparados con la velocidad de lectura y escritura en memoria RAM. Por lo tanto, todos los tipos de ROM se utilizan casi siempre como almacenamiento permanente de informacin o binaria, excepto en los raros casos en que se requiere su reprogramacin. o

4.2.1.

Estructura de la ROM bsica a

Para describir la operacin de una memoria ROM, se utiliza la estructura o de conexiones que se muestra en la Figura 4.4. Las terminales de salida se conocen como bits de salida. Por el momento, considrese que las terminales e de palabra son entradas, y que slo se permite colocar una valor de 1 en o solo una de las terminales de entrada a la vez. El valor lgico de las dems o a terminales se mantiene en 0. En respuesta de un valor 1 en una terminal de palabra, una palabra se produce en las terminales de salida. Para describir su operacin, supngase que la ROM en la Figura 4.4 debe o o realizar la siguiente funcin: como tiene 10 terminales de palabra, cada una o corresponde a un d gito decimal. Cuando un valor de 1 se coloca en una terminal de palabra, su valor binario aparece en las terminales de salida. Por ejemplo, si se coloca un 1 en la terminal de palabra 1, entonces la salida es a3 = 0, a2 = 0 a1 = 0 a0 = 1 (00012 = 110 ). De forma similar, si se coloca un 1 en la terminal de palabra 6 se tiene que a3 = 0, a2 = 1 a1 = 1 a0 = 0 (01102 = 610 ).

94

0 1 2 3 4 5 6 7 8 9

Terminales de palabra

a a a a

0 1 2 3

Terminales de salida

Figura 4.4: Conexiones de una ROM.

95

Los circuitos en el interior de la ROM conectan las terminales de salida con las terminales de palabra apropiadas. Estas conexiones no se hacen de forma ordinaria con alambre, sino ms bien se utilizan circuitos semicona ductores que previenen de la conexin directa entre circuitos de entrada y o salida. Una entrada real de una ROM consiste de un decodicador de direccin o como el descrito en la Figura 4.3. Ahora, cada terminal de direccin del o decodicador se conecta a la terminal de direccin correspondiente de la o ROM. De tal forma, la ROM se utiliza de la misma manera que una RAM ordinaria, es decir, se le provee de una direccin a la ROM y sta produce o e una palabra como salida (Ntese que puede considerarse que la ROM es una o forma de RAM).

4.2.2.

ROM programable PROM

Cuando una PROM sale de la fbrica, viene con todas las conexiones a cerradas entre sus entradas y sus salidas. Si se coloca un valor de 1 en cualquier terminal de entrada, se genera un 1 en todas las terminales de salida, es decir, la PROM no contiene informacin, y todos sus bits se encueno tran con valor 1. Para poder programarla, la PROM cuenta con conexiones fundibles. Una conexin fundible acta como un fusible comn. Cuando se o u u pasa suciente corriente elctrica por l, se derrite, abriendo el circuito. El e e usuario de la PROM, entonces, debe fundir aquellas conexiones donde la conexin entre entrada y salida no se desea. Esto se logra mediante pasar o una corriente elctrica relativamente grande entre las terminales de entrada e y salida donde no se desea la conexin, lo que representa incorporar 0s de o modo que la PROM se va llenando con la informacin binaria requerida por o el usuario. Como ejemplo, considrese que la ROM de la Figura 4.4 fuera una e PROM. Durante su programacin, todas las conexiones fundibles entre la o terminal de direccin 0 y las salidas tendr que romperse, de tal modo que o an no hubiera salida en las terminales fundidas cuando a la entrada se coloca un 1 en la terminal de direccin 0. De forma similar, la conexin entre o o la terminal de direccin 3 y las salidas a3 y a2 deben romperse, ya que al o aplicar un valor de 1 a la terminal de direccin 3 se espera que a la salida o a3 = a2 = 0 y a1 = a0 = 1 (00112 = 310 ). Procediendo de esta forma, toda la PROM puede programarse. Una vez programada, no puede volverse a programar. Se pueden romper algunas conexiones adicionales, pero aqullas e que han sido rotas no puede restaurarse. 96

4.2.3.

PROMs borrables EEPROM y UVEPROM

La conexin entre las salidas y entradas en una PROM borrable es un o circuito semiconductor que inicialmente no provee de tal conexin, sino que o se modica su estado por efecto de una corriente elctrica intensa (o en e ocasiones un voltaje alto) aplicado entre las terminales de entrada y salida. Estas terminales queda conectadas en una forma (casi) permanente. Las PROM borrables se programan mediante atrapar una carga en reas a de aislamiento elctrico. Cuando se aplica la corriente intensa, la regin de e o aislamiento se rompe temporalmente. En tal circunstancia, una carga se atrapa en la regin. Cuando se quita la corriente, la capa aislante se reeso tablece, pero ahora cuenta con la carga elctrica atrapada. La presencia de e tal carga se utiliza para encender los dispositivos electrnicos que conectan o las terminales de entrada y salida de la PROM. Una PROM de este tipo puede borrarse mediante su exposicin a luz o ultravioleta (UVEPROM). Esto causa que la capa aislante se rompa temporalmente, liberando la carga atrapada. Los niveles de luz ultravioleta necesarios para borrar una memoria son tan altos que la exposicin a una luz o ordinaria no es capaz de borrarla. No se requiere introducir corrientes intensas cuando se borra este tipo de memorias. As la PROM puede volverse a , programar con el procedimiento normal. Ntese que borrar y programar son o dos operaciones muy lentas, comparadas con la escritura y lectura de una RAM. Es por esto que las PROM no son frecuentemente reprogramadas. Existen algunos circuitos especiales controlados por microprocesador que se utilizan para programar PROMs. En los ms sosticados, la informacin a o binaria puede almacenarse primero en una RAM, y luego escribirse en la ROM para programarla.

4.3.

Paralelizacin de dispositivos de memoria o

El nmero de palabras, o el nmero de bits por palabra, que se almacenan u u en una memoria semiconductora dada es muy comnmente insuciente para u almacenar todos los datos e instrucciones binarias de un programa dado. Sin embargo, es posible incrementar la capacidad de la memoria semiconductora mediante componer una memoria semiconductora ms grande a partir de a acumular memorias pequeas. De hecho, se tienen disponibles en el mercado n algunos dispositivos de memoria que permiten incrementar la cantidad de memoria de una computadora. Al incremento de memoria para utilizarse 97

como una sola memoria semiconductora en un sistema de cmputo se le llama o paralelizacin de dispositivos de memoria. Esta tcnica es muy utilizada por o e quienes cuentan con computadoras pequeas para poder acceder a memorias n de trabajo mayores. En tales casos, los dispositivos de memoria consisten de tarjetas impresas que cuentan con varias memorias y otros circuitos para su conexin. Alternativamente, el tamao de la memoria puede incrementarse o n mediante aadirle memorias en forma de circuito integrado. A esto se le n conoce como la paralelizacin de circuitos integrados de memoria. o

4.3.1.

La terminal Chip Select (CS)

Muchos dispositivos de memoria diseados para paralelizarse frecuenten mente tienen una terminal externa de direccionamiento llamada chip select (seleccin de circuito o CS). Esta terminal se utiliza para apagar el decoo dicador de direccin interno del dispositivo de memoria. La terminal CS o funciona de la siguiente manera: si se le coloca un valor de 1, entonces el decodicador de direccin funciona como se muestra en la Figura 4.3, es o decir, utiliza direcciones binarias externas para colocar un valor de 1 en la terminales de direccin internas. Si se coloca un valor de 0 en la terminal CS, o entonces el decodicador de direccin no funciona. No importa qu valores o e se encuentren en las terminales externas de direccin, el decodicador no o tendr como salida ningn valor de 1. a u El decodicador de direccin de la Figura 4.3 puede modicarse como o se muestra en la Figura 4.5 para incluir una terminal CS. En tal caso, se aade una terminal extra de entrada a cada compuerta AND a, b, c y d, las n cuales se conectan a la vez a la entrada CS. Cuando el valor de entrada en CS es 1, entonces el circuito de la Figura 4.5 funciona esencialmente como el circuito de la Figura 4.3. Por otro lado, cuando el valor en la terminal CS es 0, las salidas de todas las compuertas AND toman el valor de 0, por lo que ninguna palabra de memoria se direcciona.

4.3.2.

La terminal Output Enable (OE)

Los dispositivos de memoria diseados para la paralelizacin frecuenten o mente tienen una terminal de control de direcciones llamada output enable (habilitacin de salida u OE). Cuando se coloca un valor de 1 en esta tero minal, la memoria funciona de manera normal. Por otro lado, si se coloca un valor de 0, entonces la salida se desconecta efectivamente de las terminales de salida del dispositivo de memoria. Esto se conoce con el nombre de circuito tri-estado. En la Figura 4.2 se muestra cmo la salida de varias o 98

a
Direcciones Binarias Externas

D1

Q1 Q

Chip Select

Figura 4.5: Modicacin de un decodicador de direccin para contar con o o una terminal chip select. celdas binarias se conectan mediante compuertas OR a las terminales de salida de la memoria. El uso de OE elimina la necesidad de tales compuertas OR cuando las salidas de la memoria se paralelizan. Algunos dispositivos de memoria combinan las dos terminales, CS y OE, en una sola terminal chip enable (habilitacin de circuito o CE). o En seguida, se describe cmo dispositivos de memoria pueden paralelio zarse para incrementar el nmero de palabras en la memoria de una compuu tadora. En la Figura 4.6 se muestra la paralelizacin de tres dispositivos de o memoria. En realidad, se supone que cada dispositivo de memoria cuenta con una estructura similar a la memoria de la Figura 4.2, conjuntamente con un decodicador de direccin con una terminal CS (Figura 4.5). Se supone o que cada dispositivo de memoria tiene una terminal OE que se ha combinado con CS para contar con una sola terminal CE. Cada dispositivo de memoria contiene cuatro palabras de cuatro bits cada una. Ntese que las terminales de direccin a0 y a1 de todos los diso o positivos de memoria se han conectado entre s De este modo, el mismo . valor binario aplicado a estas dos terminales direcciona una palabra dentro de cada uno de los tres dispositivos de memoria. Sin embargo, ntese que o las terminales CE de cada dispositivo no se encuentran conectadas entre s . De tal modo, solo aquel dispositivo de memoria cuyo CE tenga un valor de 99

Terminales de direccion interna

D0

a
0

R/W R/W Salidas Entradas (4 bits) Entradas Salidas (4 bits)

a0 a1 CE 1

a0 a1 CE

R/W Entradas Salidas CE CE 2 R/W Entradas Salidas CE CE 3

Terminales de direccion

a0 a1

a0 a1

Figura 4.6: Una memoria de doce palabras construida mediante la paralelizacin de tres dispositivos de memoria de cuatro palabras. o

100

1 ser direccionado. Por ejemplo, si se desea direccionar la palabra 3 del a dispositivo de memoria 2, entonces se requieren los siguientes valores:

a0 = 1 a1 = 1 CE1 = 0 CE2 = 1 CE3 = 0 Las terminales de entrada correspondientes se conectan juntas. Por ejemplo, todas las terminales de entradas para el bit 0 se conectan juntas. De forma similar todas las terminales para los bits 1, 2, etc., as como las ter minales de entrada para la seleccin de lectura o escritura (Read/Write). o Ahora bien, supngase que se desea escribir en la palabra 3 del dispositio vo de memoria 2. Los valores dados anteriormente se deben colocar en las terminales de direccin, mientras que un valor de 1 debe colocarse en la o terminal Read/Write. Solo entonces, la palabra 3 de la memoria 2 puede direccionarse. As los valores de las terminales de entrada a la memoria se , pueden almacenar en la localidad deseada. En el caso de las terminales de salida, tambi es necesario conectar las en terminales juntas. Por ejemplo, todos los bits 0 de las terminales de salida se conectan. Recurdese que cuando el valor de la terminal CE de una memoria e es 0, las terminales de salida se desconectan. Por tanto, si se desea leer una palabra almacenada en la direccin 3 de la memoria 2, se aplican los valores o anteriores para el direccionamiento y se coloca un valor de 0 a la terminal Read/Write. Ya que CE1 y CE3 tienen valor 0, las salidas de sus respectivas memorias se encuentran desconectadas. Igualmente, dado que CE2 tiene valor 1, las salidas de esta memoria se conectan a las terminales de salida. De este modo, la palabra deseada aparece en las terminales de salida. En la Figura 4.6 se muestra la paralelizacin de tres memorias de cuatro o palabras cada una. En general, las memorias que se paralelizan contienen muchas ms palabras, y esas palabras pueden contener ms bits. Ntese que a a o entonces hay una buena cantidad de variantes. Por ejemplo, la operacin o de las terminales de control como CE tambin puede variar de fabricante e a fabricante. As los detalles reales para la conexin de memorias a n , o de formar una memoria ms grande y compleja puede variar respecto a los a detalles que se han discutido hasta aqu por lo que los detalles espec , cos de 101

las memorias deben obtenerse de los manuales que proveen los fabricantes. Aun cuando no se ha mencionado, las memorias pueden paralelizarse para formar palabras con un mayor nmero de bits. u

4.4.

Cintas y discos

Todos los tipos de memorias que se han discutido hasta este punto han sido memorias de acceso aleatorio. En tal tipo de memorias, cualquier direccin de memoria puede leerse o escribirse sin relacin con ninguna otra o o direccin. Como se ha discutido anteriormente, esta es una memoria muy o rpida. En esta seccin, se mencionan otros tipos de memoria cuyo tiempo a o de respuesta es mayor, es decir, son ms lentas para responder, pero que a pueden proveer de mucho ms espacio de almacenamiento a un costo mucho a ms bajo. a En realidad, estas formas ms lentas de memoria pueden almacenar enora mes cantidades de informacin binaria. Por ejemplo, pueden utilizarse pao ra almacenar todos los registros de los cuentahabientes de un banco. Normalmente, esta cantidad de informacin es muy grande para almacenarse o en la memoria principal, pero fcilmente puede guardarse en algunas cintas a o discos. Cuando un programa que usa estos datos debe ejecutarse, slo se o requiere que los datos se transeran de la cinta o disco a la memoria principal para ser procesados. El resultado puede ser de nuevo recolectado y almacenado en la cinta o disco. Dado que se trata de informacin binaria, los programas tambin pueo e den almacenarse en cinta o disco. Cuando deben ejecutarse, se copian a la memoria principal. Las tcnicas de almacenamiento masivo (y lento) que se e discuten en esta seccin resultan muy utiles para preservar datos y prograo mas. Tambin es comn que este tipo de memoria se utilice como memoria e u principal, lo que hace la operacin mucho ms lenta, pero provee de una o a gran cantidad de espacio de memoria barata. En la mayor de los casos, las tcnicas de almacenamiento masivas se a e basan en el uso de pel culas ferromagnticas que almacenan datos. Su operae cin diere al funcionamiento de la memoria principal en que aqu se efecta o u realmente un movimiento, en el que la pel cula ferromagntica se mueve rese pecto a un dispositivo o cabeza de lectura o escritura. La Figura 4.7 muestra un dispositivo electromagntico que permite la e grabacin sobre supercies ferromagnticas. En todos estos tipos de dispoo e 102

Solenoide

Campo Magnetico

Espacio de aire

Cabeza

Movimiento

Figura 4.7: Diagrama de grabado en una pel cula ferromagntica. e sitivos, la pel cula de material ferromagntico se monta sobre un mecanismo e de soporte como una cinta o un disco, que se encarga de mover el material bajo la accin de una cabeza. Esta se fabrica de material magntico, y o e comnmente cuenta con un solenoide conductor que se enreda en uno de sus u extremos. En el otro extremo, se tiene un espacio de aire colocado muy cercanamente al material ferromagntico. Ntese que el diagrama de la Figura e o 4.7 es en realidad mucho ms grande que una cabeza magntica verdadera. a e El espacio de aire, as como la distancia entre la cabeza y la pel cula, son muy pequeos. Cuando una corriente elctrica se pasa a travs del solenoide, n e e se genera un campo magntico en la cabeza. En el punto del espacio de aire, e el campo toca la supercie ferromagntica de la pel e cula, magnetizndola. a Dado que la pel cula se mueve bajo la accin del campo magntico, los pulo e sos de corriente que se apliquen al solenoide se reejan como regiones cuyas molculas tienen un tipo de arreglo magntico y regiones sin tal arreglo. La e e informacin, entonces, se ha escrito sobre la pel o cula. Ntese que se puede o cambiar la direccin de la corriente, lo que invierte la polaridad de cada o regin magntica. o e Ahora supngase que no se aplica una corriente al solenoide, sino que o solamente se mueve la pel cula ferromagntica bajo la cabeza. Cuando una e regin magnetizada pasa bajo la cabeza, se genera un campo magntico o e en la cabeza. Cuando una regin no-magnetizada pasa bajo la cabeza, no o 103

se genera ningn campo. Por tanto, conforme la pel u cula se mueve bajo la cabeza, sta cambia su caracter e stica magntica, lo que genera un voltaje en e las terminales del solenoide. De este modo, la informacin almacenada en o el medio ferromagntico se lee como un cambio de voltaje en las terminales e del solenoide.

4.4.1.

Cintas

Una forma de almacenamiento magntico involucra que la pel e cula ferromagntica se coloque sobre una cinta de plstico delgado. Esta cinta se e a enrrolla sobre rieles, lo que permite que pueda manipularse y almacenarse fcilmente. Frecuentemente, se utilizan varias cabezas en paralelo y perpena dicularmente al movimiento de la cinta, lo que la divide en pistas o tracks a lo ancho de la cinta. Cada pista se utiliza para almacenar diferente informacin. Algunas pistas proveen a la computadora sobre informacin acerca o o de la localizacin o posicin de datos en la cinta. Frecuentemente, las cintas o o tienen informacin grabada en su inicio que se conoce como directorio (direco tory). Este sirve como un ndice, informando a la computadora dnde en la o cinta se almacenan ciertos datos. En general, las cintas almacenan diferentes conjuntos de datos llamados archivos (les). Por ejemplo, un archivo puede contener los registros de las cuentas de los clientes de alguna tienda; otro archivo puede contener informacin sobre inventarios, etc. Si se desea leer un o archivo en particular, es necesario saber su posicin en la cinta. Supngase, o o por ejemplo, que una pista puede almacenar hasta 100,000 bits. Entonces, un archivo puede comenzar en una posicin particular, en el bit 17,325. La o pista que se utiliza para determinar posiciones puede contener un valor de 1 por cada bit. As mediante contar el nmero de valores 1 a partir del inicio , u de la cinta, la computadora puede determinar la posicin de un punto en la o cinta que contiene los datos requeridos, y colocarlo bajo la cabeza lectora. Las cintas se escriben y leen mediante una unidad de cinta (tape drive). Esta contiene componentes para la grabacin y elementos mecnicos para el o a movimiento de la cinta. Las cintas puede removerse fcilmente o insertarse a en la unidad de cinta, de modo que una cinta diferente puede usarse cada vez. Por tanto, la cantidad de informacin que puede almacenarse en cintas o es casi ilimitado. Una sola cinta puede almacenar gran cantidad de informacin. Por ejemo plo, una cinta con 6 cabezas para almacenamiento de datos puede almacenar hasta 100 millones de bits. Por otro lado, la cantidad de tiempo que se necesita para leer o escribir un dato en memoria se conoce como tiempo de acceso 104

de esa memoria. La principal desventaja de las cintas como almacenamientos masivos es precisamente su gran tiempo de acceso. Una cinta debe ser re-embobinada completamente antes de que se pueda al menos buscar un dato. Algunas unidades de cinta pueden mover las cintas a gran velocidad (algo asi como 50 400 cm/s). Sin embargo, el tiempo de acceso sigue siendo o muy grande comparado con otros sistemas de almacenamiento. De hecho, las cintas se conocen como sistemas de acceso secuencial, ya que los datos se almacenan en una secuencia sobre la cinta, y es necesario mover la cinta secuencialmente por toda su longitud entre la posicin actual y la posicin o o deseada para obtener cualquier dato particular.

4.4.2.

Discos

En este tipo de almacenamiento en memoria, la pel cula ferromagntica e se coloca sobre un disco. La informacin se almacena en pistas sobre la o supercie del disco. Ntese que las pistas ahora son c o rculos concntricos, y e no en forma de espiral como los discos fonogrcos. Se hace girar el disco a sobre su centro a una alta velocidad. Para leer o escribir del disco, la cabeza se coloca sobre la pista deseada. Por tanto, para leer diferente informacin, o la cabeza debe moverse sobre el radio del disco. El almacenamiento en discos es mucho ms rpido que en cintas, ya que a a se requiere pasar secuencialmente por las pistas en lugar de pasar por todos los datos almacenados. As en promedio, un disco requiere hacer media , revolucin antes de que la informacin deseada se encuentre bajo la cabeza, o o haciendo el tiempo de acceso mucho menor. El tiempo de acceso a disco se hace tan rpido como pueda la cabeza lectora moverse de una pista a a otra, lo que representa un operacin muy precisa y que toma algn tiempo. o u Para acelerar la operacin, frecuentemente se colocan varias cabezas sobre o un mismo disco. De este modo, la distancia en promedio que la cabeza debe moverse es menor, por lo que se disminuye el tiempo de acceso. El tiempo de acceso de un disco t pico se encuentra en el orden de los milisegundos. Esto, por supuesto, es un promedio, ya que el tiempo de acceso depende del movimiento de las cabezas de una pista a otra. Este tiempo es mucho ms a veloz que una cinta, pero tambin resulta muy lento al compararlo con el e tiempo de acceso de una RAM. El almacenamiento en disco no es secuencial, ya que no se lleva una secuencia de los datos del disco como se lleva en una cinta. Es por ello que a los discos se les conoce como almacenamiento de acceso directo.

105

Actualmente, existen dos tipos de discos para computadoras digitales: el disco duro (hard disk) y el disco exible (oppy disk). El primero representa la forma original de los discos para almacenamiento masivo, y comnmente se u encapsulan en contenedores metlicos cerrados. Tienen capacidad de varios a millones de bits, que ao con ao va en aumento. n n Los discos exibles son en realidad delgadas supercies de material ferromagntico almacenadas en un sobre de plstico. Esta es la razn precisa e a o de su popular nombre. El sobre provee de ranuras al exterior que permiten la conexin del eje que hace rotar al disco, as como a la cabeza lectora. De o hecho, el disco gira dentro del sobre. En comparacin con los discos duros, o los discos exibles rotan a una velocidad mucho menor, y solo se cuenta con un juego de cabeza lectora y escritora. Por tanto, los discos exibles tienen un tiempo de acceso mucho mayor que los discos duros. Adems, tienen una a capacidad limitada a apenas poco ms de unos millones de bits. Aun cuando a pueden leerse y escribirse varias veces, de hecho se gastan f sicamente por el uso. Sin embargo, la principal ventaja de los discos exibles es su bajo costo.

4.5.

Cdigos o

La informacin almacenada en cualquier tipo de memoria digital es un o nmero binario, una secuencia de unos y ceros. De hecho, todas las opeu raciones bsicas de la computadora estn diseadas en trminos binarios. a a n e Frecuentemente, es comn que se desee almacenar informacin o trabajar u o con datos que contienen letras, nmeros y otros caracteres utiles. Por ejemu plo, una lista de nombres puede almacenarse para posteriormente ordenarse alfabticamente. Este tipo de informacin se conoce con el nombre de datos e o alfanumricos. Para almacenar datos alfanumricos como secuencias de unos e e y ceros, se utilizan cdigos. Un cdigo es una cierta secuencia de nmeros o o u binarios que representan letras y s mbolos. La computadora debe ser programada para procesar estos datos apropiadamente. Por ejemplo, un monitor funciona de modo que cuando en el teclado se escriben ciertas letras o nmeu ros, estos aparezcan en la pantalla del monitor. Cuando el programa requiere que ciertas palabras se escriban, la computadora debe enviar las secuencias correctas de unos y ceros al monitor. Los cdigos de mayor uso en computadoras digitales son el cdigo ASCII o o (American Standard Code for Information Interchange) y el cdigo EBCo DIC (Extended Binary Coded Decimal Interchange Code). La siguiente tabla 106

muestra los valores binarios o cdigos de algunos de los datos alfanumricos o e ms comnmente utilizados para representar letras, nmeros y el espacio en a u u blanco. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ASCII 100 0001 100 0010 100 0011 100 0100 100 0101 100 0110 100 0111 100 1000 100 1001 100 1010 100 1011 100 1100 100 1101 100 1110 100 1111 101 0000 101 0001 101 0010 101 0011 101 0100 101 0101 101 0110 101 0111 101 1000 101 1001 101 1010 EBCDIC 1100 0001 1100 0010 1100 0011 1100 0100 1100 0101 1100 0110 1100 0111 1100 1000 1100 1001 1101 0001 1101 0010 1101 0011 1101 0100 1101 0101 1101 0110 1101 0111 1101 1000 1101 1001 1110 0010 1110 0011 1110 0100 1110 0101 1110 0110 1110 0111 1110 1000 1110 1001 0 1 2 3 4 5 6 7 8 9 blanco ASCII 011 0000 011 0001 011 0010 011 0011 011 0100 011 0101 011 0110 011 0111 011 1000 011 1001 000 0000 EBCDIC 1111 0000 1111 0001 1111 0010 1111 0011 1111 0100 1111 0101 1111 0110 1111 0111 1111 1000 1111 1001 0100 0000

Ntese que en ambos casos, cada cdigo provee de un valor binario unico o o para cada letra y cada nmero. Tales valores son de gran utilidad al comuu nicar a la computadora con el ambiente exterior. Cuando se escribe en un teclado de la computadora, por ejemplo, ste se encarga de convertirlos en e su representacin binaria. En general, es conveniente que todos los s o mbolos se representen mediante secuencias de ceros y unos con una misma longitud. As lo que se transmite son los valores binarios de los cdigos de las letras, , o los nmeros y otros s u mbolos (ortogrcos, de puntuacin, etc.). a o 107

Ntese que los cdigos de la tabla anterior se ordenan numricameno o e te: el valor binario del cdigo representante de la A es menor que el valor o binario de la B. Esto resulta util en programas de computadora que permi ten ordenar listas alfabticamente. En la tabla solo se muestran las letras e maysculas. Sin embargo, tambin hay cdigos para las letras minsculas. u e o u Tambin es interesante que los tres bits ms signicativos del cdigo ASCII e a o para las letras maysculas son 100 para las letras de la A a la O, y 101 de u la P a la Z. Si se reemplaza el 100 por 110 y el 101 por 111, se tienen los cdigos ASCII para las letras minsculas. Tal cambio es similar en el caso o u del cdigo EBCDIC. En tal caso, los cuatro bits ms signicativos de los o a cdigos cambian a minsculas, en particular, si el 1100 se reemplaza por o u 1000, el 1101 se reemplaza por 1001, y el 1110 se reemplaza por 1010.

4.5.1.

Cdigos de deteccin de errores o o

Normalmente, las comunicaciones hacia una computadora y de la computadora hacia el exterior se hace mediante cables, alambres, o algn otro u medio de transmisin de datos. La mayor de estos medios funcionan en o a ambientes donde existe ruido, que se reere a seales espurias que pueden n llegar a afectar la transmisin. De hecho, por efecto de ruido, dentro de una o comunicacin digital un 0 puede aparecer despus de la transmisin como o e o un 1, y viceversa. Para evitar este tipo de problemas, se han desarrollado cdigos que pero miten detectar si algn bit de una transmisin digital ha cambiado durante u o la misma. Uno de tales cdigos se conoce como cdigo de bit de paridad. En o o este cdigo, se aade un bit extra al mensaje binario, que toma el valor de 0 o n o 1 dependiendo de si el nmero de unos en la representacin binaria de una u o letra tiene paridad par o impar, respectivamente. De tal modo, al recibir una secuencia que representa un s mbolo, la computadora puede vericar la paridad del nmero total de unos en la representacin. Si el nmero total de u o u unos no corresponde con la paridad expresada por el bit de paridad, entonces el s mbolo se rechaza y se puede enviar un mesaje de error solicitando la retransmisin del s o mbolo. Sin embargo, es notorio que si el medio de transmisin est sujeto a ruido, ste puede afectar a cualquier bit en el s o a e mbolo, puediendo cambiar dos bits, o hasta al propio bit de paridad. En ambos casos, el cdigo de bit de paridad resulta intil para detectar errores, por o u lo que se han desarrollado otros tipos de cdigos de deteccin y correccin o o o de errores ms sosticados que permiten una transmisin ms segura de los a o a datos binarios. 108

Cap tulo 5

El cmputo digital bsico o a


En este cap tulo se discute la forma en que las operaciones de cmputo o se realizan en una computadora digital. Se mencionan los detalles respecto a cmo los nmeros se suman y se multiplican. Tambin se mencionan otras o u e operaciones importantes. Ya que todas las operaciones de cmputo se realio zan sobre el sistema numrico binario, es necesario analizar las operaciones e binarias para observar cmo se relacionan con los circuitos lgicos de una o o computadora digital.

5.1.

La unidad aritmtica bsica e a

En una computadora digital, las operaciones aritmticas bsicas se realie a zan en un componente digital llamado Unidad Lgico-Aritmtica (Arithmetic o e Logic Unit, o simplemente ALU). Esta se relaciona con uno o ms registros a llamados acumuladores, donde se almacenan los resultados de las operaciones. Por simplicidad, se considera por ahora que la ALU se relaciona con un solo acumulador. Una operacin aritmtica t o e pica consiste en lo siguiente: un valor binario se lee de memoria y se da como entrada a la ALU, en donde se puede sumar, restar, multiplicar o dividir (dependiendo de la operacin aritmtica que se o e le instruya a la ALU) con el valor binario que se encuentre en el acumulador. El resultado de esta operacin se almacena de nuevo en el acumulador. En o el caso de una operacin lgica, se realiza exactamente lo mismo, excepto o o que la operacin debe ser lgica (AND, OR, NOT, XOR, etc.). o o En la seccin 3.4 se considera un sumador completo, cuyo circuito lgico o o se presenta en la Figura 3.17. En este cap tulo se considera al sumador 109

completo como parte de la ALU. A continuacin, la Figura 5.1 representa o al sumador completo como un diagrama de bloque.

sj Salidas cj SC

bj aj c j1 Entradas

Figura 5.1: Diagrama de bloque de un sumador completo. Este sumador completo (SC) suma tres nmeros binarios de un solo bit u bj , aj y cj1 , para obtener su suma sj y el acarreo a una siguiente etapa cj . Recurdese de la seccin 3.4 que bj y aj representan los j-simos bits e o e en un nmero binario, y que cj1 es el acarreo proveniente de la columna u anterior j 1. Para ilustrar esto, la Figura 5.2 presenta un sumador de tres bits, que permite sumar dos nmeros binarios de tres bits (a2 a1 a0 y b2 b1 b0 , u respectivamente) utilizando sumadores para obtener un resultado tambin e de tres bits (s2 s1 s0 ). Ntese que c2 , el acarreo de la columna ms a la derecha, no se utiliza. Si o a la suma resulta en un nmero de cuatro bits, entonces se genera un overow. u Esto se discute en la Seccin 2.3. El acarreo c2 puede utilizarse entonces como o indicador de que un overow ha sucedido (particularmente si c2 = 1). Esto puede generar, por ejemplo, que un mensaje de advertencia aparezca en la pantalla. Para formar una ALU muy simple, se combina a continuacin el sumador o con un registro de entrada y salida paralela. Tal registro se discute en la Seccin 3.8 (ntese que el circuito en la Figura 3.30 funciona como un regitro o o de entrada y salida paralela si las seales de control son c0 = c1 = 0, c2 = 1, n c3 = 0). En la ALU de la Figura 5.3 se puede utilizar un registro ms a complejo, pero esto se evita por razones de simplicidad. En la operacin del circuito de la Figura 5.3 pueden verse dos l o neas de control: ADD y CLR. Si se desea realizar una suma, debe colocarse ADD = 1 y CLR = 0. Supngase que en tal caso, un nmero binario de tres o u bits se encuentra almacenado en el registro acumulador. La salida de cada ip-op del registro se conecta con la entrada de su correspondiente sumador 110

Salidas s2 s1 s0

s2 SC c2

b2 a2 c1

s1 SC c1

b1 a1 c0

s0 SC c0

b0 a0

a2

b2

a1

b1

a0

b0

Entradas

Figura 5.2: Un sumador de tres bits.

111

Entradas b2 b1 b0

s2 SC c2

b2 a2 c1

s1 SC c1

b1 a1 c0

s0 SC c0

b0 a0

D2

D1

D0

CLK f g ADD

h Q Q

CLR

Q0

Salidas

Figura 5.3: Una ALU simple de tres bits.

112

completo, de tal modo que el nmero almacenado en el acumulador es uno u de los operandos a ser sumados. El otro nmero binario debe aplicarse en las u entradas b2 b1 b0 . Despus de realizar la adicin, el resultado s2 s1 s0 aparece e o en las salidas Q2 Q1 Q0 . Ahora bien, el resultado debe aparecer almacenado en el acumulador. Ya que CLR = 0, entonces una entrada de cada compuerta AND e2 , e1 y e0 debe tener valor 1, de modo que D2 = s2 , D1 = s1 y D0 = s0 . Por lo tanto, despus e del siguiente pulso de reloj, el nmero que se almacena en el acumulador es u el resultado de la suma. Ntese que se hace uso de ip-ops maestro-esclavo o o de disparo por anco. As la salida no cambia hasta despus del pulso de , e reloj. Por tanto, si un nmero se encuentra almacenado en el acumulador, u tal nmero permanece ah hasta el siguiente pulso de reloj. Supngase que u o el nmero a sumarse aparece a la salida de los ip-ops despus del pulso de u e reloj que (arbitrariamente) puede nombrarse pulso de reloj 1. Durante el tiempo en que el pulso de reloj est apagado (entre los pulsos de reloj 1 y 2) a la suma se realiza. Entonces, al siguiente pulso de reloj (pulso de reloj 2) la entrada a los ip-ops es el resultado de la suma, pero la entrada a los ipops no ha cambiado. As las entradas a2 , a1 y a0 al sumador no cambian , hasta el pulso de reloj 2. Los estados internos de los ip-ops han cambiado ya al valor deseado. Por tanto, solo hasta despus del pulso de reloj 2, la e salida de los ip-ops toma el valor del resultado de la suma. Ntese que o toda esta operacin supone que los sumadores son sucientemente rpidos, o a o que los pulsos de reloj se encuentran lo sucientemente apartados entre s , de modo que la suma puede realizarse entre los dos pulsos de reloj. Por otro lado, si ambas l neas de control CLR y ADD tienen valor 0, entonces ningn pulso de reloj o entrada se aplican a los ip-ops, por lo u que el nmero almacenado en el acumulador permanece ah Si CLR = 1 y u . ADD = 0, entonces todas las entradas a los ip-ops toman valor de 0, ya que una de las entradas a las compuertas AND e2 , e1 y e0 tiene valor 0. Por lo tanto, se limpia el acumulador. Sin embargo, debe hacerse notar un hecho. El nmero de entrada b2 b1 b0 debe almacenarse en un registro. Este registro u podr ser parte de la ALU o ser externo a ella. Si es interno, entonces la a ALU tiene asociados dos registros, que se conocen como acumuladores.

5.2.

Aritmtica modular e

La suma hecha con una ALU diere de la suma que se realiza a mano. Ya que el registro acumulador puede almacenar tan solo un nmero jo de u 113

bits, puede darse una condicin de overow (sobrecapacidad) en el resultado. o Podr parecer que esta propiedad de la ALU es totalmente desventajosa, a pero en esta seccin y la siguiente se pretende mostrar cmo puede hacerse o o uso de ella. Primero, es necesario familiarizarse con algunos detalles del almacenamiento de nmeros, mediante un acumulador que trabaje en base 10. Un u odmetro simple de automvil puede utilizarse como ejemplo util. Supngao o o se que se tiene un odmetro que llega hasta 99, y regresa a 0 (se utiliza el o 99 en lugar de un nmero ms grande como 99999 para contar con nmeros u a u pequeos en el ejemplo). Por tanto, las lecturas en el odmetro pueden ser: n o 00 01 02 . . . 10 11 12 . . . 96 97 98 99 00 01 02 . . .

El acumulador base 10 del odmetro puede almacenar nmeros del 0 o u al 99, pero si se sobrepasa su capacidad con nmeros adicionales, entonces u vuelve a empezar de nuevo. De hecho, los acumuladores de las computadoras funcionan tambin as e .

114

Ahora bien, supngase que el odmetro muestra un valor de 26. No o o podemos estar seguros si el automvil ha sido utilizado por 26 kilmetros o o o alguna de las siguientes distancias:

26 126 226 . . .

(Podr tambin tratarse de nmeros negativos, pero este caso se consia e u dera en la siguiente seccin). o Si se utiliza un registro que puede almacenar nmeros hasta el 99, enu tonces los nmeros 26, 126, 226, ... producen lecturas similares. De forma u parecida, 47, 147, 247, 347, ... ser similares. Por esto, se introduce un an s mbolo que toma esto en cuenta. Considrese el s e mbolo 100 . Para el primer ejemplo, se puede armar que:

26100 126100 226 El s mbolo 100 signica entonces que esta equivalencia se da para un registro que almacena 100 nmeros (0, 1, 2, ..., 99). Esto se lee como equiu valente mdulo 100 congruente, mdulo 100. Esto es, que 26 y 126 son o o o equivalentes mdulo 100. Ntese que el signicado es que cada uno de estos o o resultados produce la misma salida del registro. Si se desea encontrar los nmeros que son equivalentes mdulo 100 para u o un nmero dado, slo se requiere sumar 100 y los mltiplos de 100 a tal u o u nmero. Por ejemplo, para 26, sus equivalentes mdulo 100 son 126, 226, u o 326, etc. De hecho, no hay esencialmente ninguna diferencia si se utiliza un registro binario. Por ejemplo, utilizando un acumulador de tres bits, se tiene que los valores representables son: 115

000 001 010 011 100 101 110 111 000 001 010 011 100 . . .

Como ejemplo, supngase que el registro tiene una lectura de 0112 . No o se puede estar seguro cuntas vueltas se han dado sobre el mismo registro, a de modo que 0112 podr representar 310 , 1110 1910 . Utilizando la notacin a o o anterior, se puede armar que: 0118 10118 10011 De forma similar, se puede escoger otro ejemplo: 1008 11008 101008 11100 Considerando esto de una forma diferente, supngase que si se suma o 10002 al registro de tres bits, se va a travs de 8 pasos en un ciclo y se e regresa al punto de inicio. De forma similar, para un acumulador de 4 bits, si se suma 16 al nmero binario almacenado, no hay cambio en el nmero u u almacenado. Aun cuando esto parece no llevar a ningn resultado prctico, u a en la siguiente seccin se discute cmo estas ideas pueden utilizarse para o o simplicar los circuitos digitales de una computadora.

116

Antes de considerar mayores detalles de la aritmtica modular, se discute e la substraccin binaria. Supngase que se desea realizar la siguiente resta: o o
1011 0110 0101 minuendo sustraendo diferencia

Normalmente, la substraccin se realiza columna por columna, comeno zando por la derecha. Sin embargo, el bit de la tercera columna del sustraendo es mayor que el bit de la tercera columna del minuendo. La solucin a o este problema es pedir prestado una unidad de bit en la cuarta columna del minuendo. De este modo, la substraccin se puede escribir como: o
0 10 1 1 0 110 0 101

Ahora bien, considrese la siguiente substraccin: e o


0110 1011 0101

Ya que el sustraendo es mayor que el minuendo, la diferencia es negativa. La manera como se consideran nmeros binarios negativos en la aritmtica u e digital se explica en la siguiente seccin. o

5.3.

Aritmtica de complemento a 2 e

En la Seccin 5.1 se discute un circuito para una ALU que puede utilizaro se para realizar adiciones. Se utilizan sumadores completos para ir sumando cada uno de los bits. Sin embargo, si se desea realizar una resta, es siempre posible desarrollar un circuito lgico que la lleve a cabo. De manera anloga o a al sumador completo, se puede desarrollar un sustractor completo. Esto no se hace en la mayor de los casos, ya que representar usar circuitos adia a cionales y hacer ms complejo el hardware, lo que incrementar el costo y a a tamao de la computadora. Por otro lado, tambin incrementar su rapidez, n e a lo que ser una ventaja. a 117

En esta seccin se presenta cmo tomar en cuenta las propiedades moduo o lares de la ALU de modo que se pueda realizar una substraccin utilizando o el sumador modular. As no es necesario aadir hardware adicional para , n realizar restas, sino ms bien se utiliza un procedimiento para trabajar los a nmeros negativos convenientemente. u Para entender cmo hacer una substraccin sin un circuito sustractor, o o supngase por ejemplo que se cuenta con un registro de 4 bits, y que se desea o restar 01002 (410 ) de 10012 (910 ). Escribiendo la resta primero en base 10, ms adelante se repite en base 2. Por tanto, se tiene que: a 94=5 Ahora bien, supngase que se suma 1610 al nmero almacenado en el o u registro. Como se discute en la seccin anterior, el valor en el registro da un o ciclo completo, por lo que no hay cambio en le nmero almacenado. Esto se u puede escribir como: 16 + 9 4 = 5 + 16 16 5 En seguida, se re-escribe la parte izquierda de la ecuacin como: o 15 + 1 + 9 4 = (15 4) + 1 + 9 Realizando la operacin, se hace primero la resta de 15 menos 4 y luego o se suma 1, y luego 9. Recuerde que se intenta evitar construir un sustractor, y por lo pronto, parece que no se ha logrado nada ya que todav es a necesario restar 4 de 15. Sin embargo, cuando esto se hace en forma binaria, la operacin resulta muy simple. 15 es el nmero ms grande que se puede o u a almacenar en el registro de 4 bits: 1510 = 11112 Ntese que este nmero es solo una lista de unos. De modo que consideo u rando la resta de este nmero, en el ejemplo 15 - 4 es: u
1111 0100 1011

El resultado de esta resta puede obtenerse directamente del sustraendo, mediante complementar cada uno de sus bits. De hecho, si se resta cualquier 118

valor binario de 11112 , la diferencia es exactamente el complemento de cada bit del sustraendo. A esto se le conoce como complemento a 1s, y es una operacin que no requiere hardware adicional. En general, todos los nmeo u ros binarios a procesar se almacenan en registros compuestos de ip-ops. Por ejemplo, supngase que un nmero almacenado en el acumulador de o u la Figura 5.3. Si se desea complementar sus bits, se require slamente too mar las salidas negadas de cada ip-op. Este nmero se encuentra siempre u disponible, de modo que no se requiere hardware adicional. A continuacin, se realiza la substraccin 4 de 9 en binario. Usando este o o procedimiento, se tiene que 410 = 01002 . Obteniendo el complemento a 1s, ste es 10112 . El complemento a 2s se obtiene sumando 1 al complemento e a 1s, lo que nos da 11002 . Finalmente, para obtener la diferencia, se debe sumar este valor a 910 = 10012 . Por lo tanto:
1100 1001 10101

Ntese el bit ms a la izquierda del resultado. Este bit no aparece en un o a registro de 4 bits. El registro solo contiene: 01012 = 510 Lo cual es la diferencia correcta. Si no se trabajara con registros, al sumar 15 + 1 = 16, lo que ser una respuesta errada. Sin embargo, sumar 16 en un a registro de 4 bits solo hace regresar al valor original de donde se comenz, o ya que el bit ms a la izquierda se pierde. As se usa una propiedad de la a , aritmtica modular como ventaja. e En trminos generales, supngase que se tiene un registro en el cual el e o nmero ms grande que se puede almacenar es R 1. Por ejemplo, en el u a caso del registro de 4 bits, se tiene que R 1 = 15. Utilizando este sistema, supngase ahora que se desea realizar la substraccin: o o D =AB Lo que realmente se realiza es: D = (R 1) B + 1 + A 119

La operacin (R 1) B es fcil de obtener, ya que slo implica compleo a o mentar cada bit de B. Las sumas siguientes producen el resultado correcto. De tal modo, solo se requieren sumadores y no sustractores para realizar la substraccin. o

5.3.1.

Complemento a 2

El nombre de la operacin que se discute anteriormente es complemento o a 2 de un nmero N . Se dene de la siguiente forma: u C2 = 2k N donde k es el nmero de bits en el registro. Por ejemplo, si se tiene un u registro de 4 bits, se tiene que 24 = 1610 = 100002 , y el complemento a 2 de N = 01002 es: C2 = 100002 1002 = 11002 Ntese que si se toma (R 1) B + 1 de la expresin para obtener la o o diferencia, en realidad lo que se hace es obtener el complemento a 2 de B. De la discusin previa, es fcil obtener el complemento a 2: se requiere slo o a o reemplazar cada bit por su complemento, y al resultado sumarle 1. Por lo tanto, si se trabaja con 4 bits, el complemento a 2 de 01002 es 11002 . Ahora bien, se sabe que el nmero almacenado en un registro es la repreu sentacin binaria de un nmero decimal. Sin embargo, podr verse esto de o u a manera diferente. La secuencia de bits, que se conoce como nmero binario, u puede considerarse como un cdigo que representa un nmero decimal. Es o u posible arreglar el cdigo de modo que el nmero binario no fuera igual a su o u equivalente decimal. Ms aun, es posible construir circuitos de compuertas a lgicas que operen sobre estos nmeros, y den el resultado correcto cuando o u se les convierta de nuevo en su forma decimal. Es notorio que el desarrollo de un cdigo como el que se menciona ser una complicacin innecesaria, y o a o que muy probablemente los circuitos lgicos resultantes ser muy complio an cados. Por lo tanto, esto no se hace para los nmeros positivos. Sin embargo, u cuando es necesario trabajar con nmeros negativos, es verdaderamente neu cesario usar algn tipo de cdigo, ya que los registros almacenan ceros o u o unos, pero no s mbolos matemticos como el punto o el signo menos. a De los muchos cdigos que pueden emplearse, se discute a continuacin o o uno que es ampliamente usado y que hace el cmputo simple. Logra esto o porque los resultados son correctos en trminos de la aritmtica modular. e e 120

De hecho, el complemento a 2 puede usarse para obtener tal codicacin. o Supngase que se tiene un registro de 4 bits. Los nmeros que almacena son: o u . . . 1011 1100 1101 1110 1111 210 310 = 110 0000 0001 0010 210 0011 0100 0101 210 + 310 = 510 0110 0111 1000 . . .

Supngase que se suma 310 a un nmero. Esto signica ir bajando en o u la numeracin hasta llegar a tres posiciones ms abajo. Por ejemplo, cono a sidrese el nmero 210 . De su posicin, al sumarle 310 , se obtiene la posicin e u o o 510 . Ahora bien, supngase que se resta 310 . Esto equivale a moverse hacia o arriba en la numeracin tres posiciones. El resultado es 11112 = 1510 . Sin o embargo se sabe que: 1510 16 110 Esto es, que 1510 es equivalente mdulo 16 a 110 . o Si se dene que 11112 represente a 110 en un cdigo, entonces se llega o a la respuesta correcta para la resta. De forma similar, 11102 representa al 210 . De este modo, se tiene una codicacin para el registro de 4 bits que o permite representar nmeros de 710 a 710 : u 121

N mero decimal u -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

N mero binario u 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111

La informacin de esta tabla es consistente con la discusin anterior, o o pero ntese que los nmeros negativos son simplemente el complemento a o u 2 de sus equivalentes positivos. Por ejemplo, para obtener la representacin o de 710 , se toma el nmero 710 = 01112 y se obtiene su complemento: u 10002 + 00012 = 10012 = 710 De forma similar, es posible obtener todos los otros nmeros negativos u en la tabla. Es notorio que si el bit ms signicativo es 0, se trata de un a nmero positivo, mientras que si es 1, es negativo. Ntese que un nmero u o u no se hace negativo simplemente por reemplazar su bit ms signicativo de a 0 a 1. Si se tienen b bits en un registro, se utilizan slamente b 1 de ellos para o representar la magnitud de un nmero. Por ejemplo, en la tabla anterior se u tienen 4 bits, pero los nmeros que se representan van de 710 a 710 . Si se u trabaja solo con nmeros positivos, entonces el rango de valores ser de 010 u a a 1510 .

5.3.2.

Uso del Complemento a 2 para la substraccin o

Utilizando un sistema de 4 bits y trabajando con la substraccin, se o presenta a continuacin que el uso del complemento a 2 para representar o nmeros negativos realmente funciona. Supngase que se desea restar 410 u o 122

de 710 . Esto resulta equivalente a sumar 710 + (410 ). Considerando sus equivalentes binarios, se tiene que el complemento a 2 de 410 = 01002 es 11002 . Sumando, se tiene que: 01112 + 11002 = (1)00112 Ignorando el bit ms signicativo entre parntesis, se tiene que 00112 = a e 310 , que es la diferencia correcta al operar 710 410 . De nuevo, ntese que se o utilizan las propiedades de la aritmtica modular para obtener el resultado e correcto. Considrese otro ejemplo: restar 610 de 310 . Entonces, se opera con el e complemento a 2 de 01102 , que es 10102 , de modo que la resta queda como: 00112 + 10102 = 11012 De la tabla anterior se observa que 11012 = 310 , el resultado correcto. Para este punto, es necesario aclarar una cosa: en algunos de los ejemplos anteriores se ha ignorado el bit de sobrecapacidad (overow) mediante ignorar o eliminar el bit ms a la izquierda del resultado. En realidad, este a no es un ejemplo de verdadera sobrecapacidad. La unica ocasin en que real o mente sucede una sobrecapacidad es cuando el tamao del resultado de una n operacin es demasiado grande para representarse con los bits disponibles o en el registro. Por ejemplo, para el registro de 4 bits, si se realiza la suma: 710 + 510 = 01112 + 01012 = 11002 El resultado, de acuerdo con la tabla, es 11002 = 410 . El resultado deber ser 1210 . Por tanto, una verdadera sobrecapacidad ha ocurrido, y a se obtiene un resultado incorrecto. Para este sistema de registro de 4 bits, una sobrecapacidad verdadera ocurre cuando el resultado es mayor que 710 . De manera similar, en un resgitro de k bits, una verdadera sobrecapacidad ocurre cuando la magnitud de un resultado excede 2k1 1.

5.4.

Multiplicacin y divisin o o

Esta seccin discute la multiplicacin y divisin como se realizan por una o o o computadora digital. Se inicia mediante describir qu se hace normalmene te cuando se multiplican dos nmeros binarios manualmente. De hecho, las u reglas de la multiplicacin binaria siguen exactamente las mismas reglas de o 123

la multiplicacin decimal que se aprende en la educacin bsica. Sin embaro o a go, el uso de nmeros binarios tiende a simplicar en mucho la operacin. u o Supngase que se desea multiplicar 11012 por 10112 : o
1101 1011 1101 1101 1101 10001111

Se comienza multiplicando 11012 por el d gito menos signicativo (12 ), para obtener el primer producto parcial. En seguida, se multiplica por el segundo d gito (12 ), produciendo el segundo producto parcial que se recorre hacia la izquierda una posicin. Se contina multiplicando con el tercer o u d gito (02 ). Como su valor es 0, simplemente se considera un recorrido de dos posiciones para la siguiente multiplicacin. Al nal, se realizan las sumas o de cada columna, produciendo el producto nal. De hecho, este proceso se repite sin importar el nmero de d u gitos. La multiplicacin binaria resulta ms sencilla que la multiplicacin deo a o cimal, debido a que los productos parciales en binario se obtienen por multiplicar por 0 1, lo que resulta en un recorrido a la izquierda en el caso del o 0, o una copia del valor multiplicado en el caso del 1. A continuacin se describe cmo el proceso de multiplicacin se realiza o o o en una computadora digital. Considrese, por ejemplo, que el producto de e dos nmeros de 4 bits da como resultado un nmero de 8 bits. De este mou u do, se considera el uso de registros de 8 bits. Esto es si se multiplican dos nmeros como por ejemplo 000010112 y 000011012 . Ntese que los multiu o plicandos deben ser lo sucientemente pequeos para que su producto no n exceda el tamao del resgistro, lo que es el caso que se discute. Ahora bien, n supngase que se tienen a ambos multiplicandos en dos registros de corrio miento. Primero, se examina el bit ms a la derecha del registro del primer a multiplicando. Si es 1, entonces el segundo multiplicando se pasa a la ALU, donde se suma. Si el bit ms a la derecha es 0, entonces se evita la suma. Se a puede llevar a cabo esta operacin mediante controlar la suma utilizando el o bit ms a la derecha del primer multiplicando conectado a la ALU. De este a modo, la suma se realiza slo si el bit ms a la derecha del primer factor o a tiene valor de 1. 124

Cada vez que se encuentra un 0 o un 1 en el primer multiplicando, es necesario recorrer el contenido del registro del segundo multiplicando a la izquierda, de modo que los productos parciales se vayan sumando. El primer multiplicando se recorre a la derecha, lo que causa que el bit ms a la derecha a se pierda. Recurdese que este bit controla la multiplicacin, pero una vez e o utilizado, se pierde. As mediante corrimientos de los registros es posible , multiplicar dos nmeros binarios. El proceso debe repetirse por cada bit u en el primer multiplicando. Cuando se termina, el contenido en el registro acumulador contiene el producto deseado. Algunas computadoras digitales cuentan con circuitos cuya funcin es o realizar la multiplicacin. Tales circuitos contienen registros y acumuladores o de modo que cuando se les provee de dos nmeros binarios, producen su prou ducto. Un circuito de este tipo se llama multiplicador alambrado (hardwired multiplier). No todos los multiplicadores alambrados funcionan como se ha descrito anteriormente. En ocasiones, se hacen simplicaciones a los circuitos. Sin embargo, la idea bsica es la misma. Si una computadora no cuenta a con un multiplicador alambrado, debe ser programada paso a paso mediante instrucciones que realicen la multiplicacin. En el siguiente cap o tulo se discute tal labor de programacin, que muchas veces involucra muchos pasos. o Pero si se cuenta con un multiplicador alambrado, entonces la unica instruc cin a ejecutar es el comando para realizar multiplicacin; los circuitos de o o la computadora, sin embargo, son ms complejos. a En seguida se discute cmo una computadora digital realiza la divisin. o o As como la multiplicacin involucra sumas, la divisin involucra restas. o o Supngase que se quiere dividir 100011112 entre 10112 (esta es la operacin o o inversa de la multiplicacin realizada anteriormente). El primer paso es veo ricar si 10112 es mayor que 10002 . Ya que lo es, entonces no se intentar a el primer paso de la divisin. Sin embargo, la computadora no puede notar o esto, de modo que realiza la siguiente divisin: o
1011 10001111 1011

Despus de realizar la resta, se prueba si el resultado es negativo (se e discute un circuito que prueba si un nmero es negativo ms adelante). Si u a lo es, entonces no se realiza el siguiente paso en la divisin. La computadora o se programa, de modo que todos los pasos anteriores y errneos se ignoren. o 125

En el ejemplo, es necesario hacer un nuevo intento:


01 1011 10001111 1011 0110111

(De hecho, la substraccin se hace mediante el complemento a 2). De o este modo, el procedimiento se repite hasta obtener el cociente 011012 . Las computadoras pueden tambin contar con un divisor alambrado (hare dwired divider), o pueden ser programadas para dividir nmeros. El segundo u caso resulta en un circuito ms sencillo, pero requiere de mucho tiempo de a programacin. o

5.5.

N meros de punto otante u

Es frecuente que en clculos cient a cos o tecnolgicos es necesario trao bajar con nmeros muy grandes o muy pequeos. Para evitar escribir laru n gos nmeros con muchos d u gitos, se acostumbra expresar tales nmeros en u trminos de una expresin que consta de un nmero multiplicado por 10 e o u elevado a alguna potencia. La potencia es un nmero entero. Por ejemplo, u las siguientes representaciones son equivalentes: 1763000 = 0,1763 107 Similarmente: 0,00000000112304 = 0,112304 107 En una computadora, a esta representacin se le conoce como notacin o o de punto otante (oating point notation), ya que el cambio en el exponente efectivamente permite mover la posicin del punto decimal, que ota. En o seguida se denen los trminos utilizados en esta notacin. Por ejemplo, los e o valores enteros 7 y -7 de las expresiones anteriores se les llama exponente, mientras que a 0,1763 y 0,112304 se les conoce con el nombre de mantisa o parte fraccional. De hecho, el primer nombre tiende a ser ambiguo, ya que este valor no es la mantisa de un logaritmo, de modo que aqu se preere el trmino parte fraccional. e 126

Cuando se utilizan nmeros de punto otante en las computadoras digiu tales, normalmente se trabaja con potencias de 2 en lugar de potencias de 10. Por ejemplo, 6410 = 27 puede escribirse como: 0,1 (102 )10002 Queda tal vez ms claro de la siguiente forma: a 0,1 28 Es decir, la parte fraccional en binario, y el exponente en decimal (pero recurdese, la computadora solo trabaja en binario). e A continuacin, se aclara un punto que comnmente causa confusin. o u o Hay una diferencia entre el tamao de un nmero y el nmero de cifras n u u signicativas. Por ejemplo, supngase que se desea expresar una longitud o en trminos de millonsimas de centr e e metro como 1,736,000. Aun cuando la medida real fuera de 1,736,401, no es posible medir con la suciente exactitud para notar esto. En tal caso, se dice que el nmero (1,736,000) se maneja u con cuatro cifras signicativas. Ahora bien, cuando se trabaja con nmeros en punto otante, en realidad u se trabaja con dos nmeros: la parte fraccional y el exponente. Cada uno u de ellos debe almacenarse aparte, pero normalmente se les puede incluir en el mismo registro. Por ejemplo, si el registro tiene 12 bits, los 8 bits menos signicativos pueden utilizarse para almacenar la parte fraccional, y los 4 bits restantes para el exponente. Supngase que se tiene el nmero: o u 0,00010110111 26 = 0,10110111 29 Requerir de 11 bits para almacenar la parte fraccional de la expresin a o a la izquierda de la ecuacin, mientras que slo requiere de 8 bits para o o almacenar la parte fraccional de parte derecha de la ecuacin. Y sin embargo, o son el mismo nmero. Si la parte fraccional se almacena en un registro u de 8 bits, entonces la expresin a la izquierda del igual tendr que ser o a 0,000101102 . Esto representa una prdida de cifras signicativas, y por tanto, e una prdida en exactitud. Para evitar esto, los exponentes de los nmeros e u de punto otante se ajustan para que el bit inmediatamente a la derecha del punto binario tenga valor 1. Se dice que tal nmero ha sido normalizado u o escalado. En tal caso, no se desperdicia espacio de memoria almacenando 127

ceros. Ntese que el punto binario y el cero a la izquierda no se almacenan. o Por ejemplo, la parte fraccional almacenada de la ultima expresin ser o a 101101112 . En un valor punto otante escalado, la posicin del punto binario o se considera inmediatamente a la izquierda del nmero, y por tanto no se u necesita almacenar. Respecto al signo, tanto la parte fraccional como el exponente pueden ser positivos o negativos. Por tanto, debe haber una regla para bits de signo: un bit se utiliza para almacenar el signo del exponente, y otro bit para el signo de la parte fraccional (de hecho, la discusin sobre complemento a 2 en o la Seccin 5.3 provee de un procedimiento para indicar nmeros negativos). o u Para averiguar de qu tamao es el nmero con que se puede trabajar e n u en una computadora, es necesario hablar de almacenamiento. Un registro almacena un nmero dado en bits. Grupos de 8 bits se conocen con el nombre u de byte. Normalmente, todos los registros dentro de una computadora tienen la misma longitud. A esto se le conoce con el nombre de tamao de palabra n (word size) de una computadora. Valores t picos de tamao de palabra son n 8, 16, 32, y 64. En seguida, se analiza qu tan grande o qu tan pequeo puede ser un e e n nmero en la computadora. Supngase que el tamao de palabra es de 32 u o n bits. Estos deben almacenar tanto el exponente, como la parte fraccional, cada uno con su signo. Dos bits de signo de 32 bits dejan 30 bits disponibles. Normalmente, 6 bits se utilizan para el exponente, mientras que los otros 24 se dejan para la parte fraccional. Ahora bien, el nmero ms grande que u a puede almacenarse como exponente es: 26 1 = 6310 Y por lo tanto: 263 = 9,223 1018 Este es un nmero muy grande. De forma similar, 263 es un nmero u u muy pequeo. Por lo tanto, la gama de valores numricos de punto otante n e que se pueden expresar en la computadora var al ir dando valores binarios an a la parte fraccional y al exponente. Se supone anteriormente que en la representacin de punto otante el o exponente se aplica unicamente a una potencia de 2. En realidad, se puede 128

utilizar cualquier otro nmero. Por ejemplo, en algunas computadoras, se u trata de potencias de 16; circuitos digitales apropiados se desarrollan para tomar en cuenta esto. Ahora bien, si se cuenta con 6 bits para almacenar la magnitud del exponente, se tiene el mismo nmero 6310 para el exponente. u Sin embargo, ahora se trata de una potencia de 1610 . De este modo, la parte exponencial puede ser tan grande como: 1663 = 7,237 1075 Esto es un nmero mucho ms grande que el obtenido mediante utilizar u a el exponente como potencia de 2. En cuanto a la parte fraccional, sta se almacena en los restantes 24 bits. e Por ejemplo, un nmero almacenado puede ser: u 0,101100111100110010110011 Mientras ms bits se almacenen, ms precisin se tiene. Supngase que a a o o slo se almacenan 23 bits. El ultimo bit a la derecha se perder Este bit o a. representa un valor de: 224 = 0,000000059610 De hecho, al perder este valor, se tiene que los nmeros 0,1246128110 y u 0,1246128210 se almacenar de la misma forma binaria. Ntese que hay an o siete cifras signicativas en tales nmeros porque hay siete ceros a la derecha u del punto decimal en la representacin base 10 de 224 . o Estos nmeros son bastante precisos. En la mayor de las aplicaciones u a cient cas y tecnolgicas, no es poslbe medir datos con tal precisin. Por otro o o lado, se pierde precisin cuando se realizan operaciones. Por ejemplo, cuando o se multiplican dos nmeros de 8 bits en su parte fraccional, se obtiene un u nmero con 16 bits en la parte fraccional del resultado. Si se eliminan los 8 u bits menos signicativos, se pierde exactitud y precisin. Algunos programas o de computadora requieren muchas operaciones, y si se va perdiendo precisin o en cada una de ellas, el resultado nal tendr un gran error. Por tanto, se a requiere de una gran precisin cuando se realizan operaciones complejas, o y en ocasiones, siete u ocho cifras signicativas resultan insucientes. Sin embargo, la mayor de las computadoras pueden ser programadas de modo a que dos o ms registros o localidades de memoria puedan utilizarse para a almacenar un solo nmero, lo que provee de precisin adicional. Esta accin u o o de agrupar registros se conoce comnmente como doble precisin. u o 129

Anteriormente, se considera un tamao de palabra de 32 bits. La man yor de las computadoras actuales tienen tal tamao de palabra, pero en a n el pasado, muchas computadoras contaban tan solo con 8 o 16 bits. Aun cuando puede parecer que estas computadoras no eran adecuadas para realizar operaciones, este no es el caso. Muchos programas realizan operaciones numricas que no requieren muchas cifras signicativas o nmeros muy e u grandes o pequeos. En tal caso, no resulta necesario utilizar muchos bits n para almacenar la parte fraccional y el exponente. Adems, hay un gran a nmero de programas que simplemente no se utilizan propiamente para reau lizar operaciones numricas. Por ejemplo, programas que ordenan listas de e nombres, mantienen un inventario, juegos, o controlan sistemas de alarma no requieren complicadas operaciones numricas, dado que no trabajan con e nmeros con muchos d u gitos. Y si se encuentra apropiadamente programada, una computadora con un tamao pequeo de palabra puede utilizarse para n n cmputo cient o co o tecnolgico. Como se discute anteriormente, se pueden o utilizar varios registros o localidades de memoria para almacenar un solo nmero. Es claro que esto efectivamente representa una prdida en la canu e tidad de memoria disponible. Sin embargo, se puede lograr operaciones ms a complejas si se cuenta con la memoria suciente para mantener la precisin. o

5.5.1.

Suma y resta

Cuando se suman o restan dos nmeros representados en punto otante, u los exponentes de ambos nmeros deben tener el mismo valor. Por ejemplo, u si se desea sumar 0,1001 28 y 0,1011 27 se requiere mover el punto de alguno de los dos valores, como por ejemplo: 0,1001 28 + 0,01011 28 = 0,11101 28 Si solo se almacenan 4 bits para la parte fraccional, la operacin provoca o una prdida de precisin debido a que en lugar de almacenar la respuesta e o correcta (0,11101 28 ) se alamcena 0,1110 28 . A esto se conoce como error de redondeo. Comnmente, estos errores son lo sucientemente pequeos u n como para ser ignorados. Sin embargo, cuando se desea mayor precisin, o una solucin puede ser el uso de doble precisin. o o

5.5.2.

Multiplicacin y divisin o o

Cuando se multiplican o dividen nmeros en punto otante, se utiliu zan las reglas ordinarias de la multiplicacin y la divisin de nmeros con o o u exponentes. Supngase que se tiene dos nmeros: o u 130

A = Fa 2Ea B = Fb 2Eb

donde Fa y Fb son las partes fraccionarias, y Ea y Eb son los exponentes. Para multiplicar ambos nmeros, se multiplican las partes fraccionarias y se u suman los exponentes: A B = (Fa Fb ) 2Ea +Eb Por ejemplo, supngase que: o

A = 0,1011 25 B = 0,1101 27

Entonces: A B = 0,010001111 212 En una computadora digital, este nmero ser escalado y almacenado u a de la siguiente forma: A B = 0,10001111 211 Ntese que hay ms bits en la parte fraccional del producto que en A o o a B, lo que signica que fcilmente puede ocurrir un error de redondeo. a Para realizar la divisin, se utiliza la siguiente expresin: o o A Fa = 2Ea Eb B Fb Es decir, cuando se realiza una divisin en punto otante, se dividen las o partes fraccionales y se restan los exponentes. Por ejemplo: 0,100001111 211 = 0,01101 26 = 0,1101 25 0,1011 25 131

5.6.

La unidad lgica-aritmtica (ALU) o e

En la Seccin 5.1 se discute una ALU sencilla que puede sumar dos o nmeros y almacenar su suma en un registro. En esta seccin se discute una u o ALU ms compleja que puede realizar varias operaciones, y que es similar a a la ALU interna del procesador de una computadora pequea. n Donde la ALU sencilla de la Figura 5.3 usa ip-ops D para el registro, en la ALU actual se utilizan ip-ops JK, ya que se obtiene un control adicional mediante su uso. Para cada operacin que se desee obtener, se o muestra un circuito sencillo. Despus de discutir todas las operaciones, se e muestra cmo todos estos circuitos simples pueden ser combinados. Ya que o todas las etapas de la ALU son idnticas, se trabaja con una sola etapa. Por e ejemplo, la ALU de la Figura 5.3 conisiste de tres etapas idnticas. e La ALU descrita aqu requiere de muchas terminales de control. Cada una de ellas se utiliza para controlar una sola operacin. Se supone por simo plicidad que la seal digital en las terminales de todas las dems operaciones n a tiene valor 0. Por ejemplo, en la Figura 5.3 hay dos terminales de control ADD y CLR. Si se desea que la ALU realice una suma, entonces ADD = 1 y CLR = 0. Muchas seales se le aplican a los ip-ops JK mediante un par de comn puertas OR como se muestra en la Figura 5.4. El signicado de este circuito se aclara cuando se haya discutido la ALU completa.
i1 i4 i5 i6 i7 i8 i1 i2 i3 i5 i6 i7 i8

Qi Qi J
i

Ki

Figura 5.4: Entradas al i-simo ip-op de la ALU. e

132

5.6.1.

Adicin e incremento o

Considrese un circuito que suma un nmero B al nmero almacenado en e u u el acumulador. Se supone que hay N + 1 bits almacenados en el acumulador; los d gitos del nmero B son: u bN bN 1 . . . b3 b2 b1 b0 Ahora bien, considrese la etapa de la ALU que suma el i-simo bit y e e almacena la suma resultante. Si los d gitos del nmero que est almacenado u a en el acumulador son: aN aN 1 . . . a3 a2 a1 a0 entonces la i-sima etapa realiza la suma bi + ai + ci1 , donde ci1 es el e acarreo de la etapa anterior. El circuito que se considera aqu en realidad realiza dos funciones: adems de sumar el nmero B al contenido del acumua u lador, tambin es capaz de aadir el valor 1 al contenido almacenado (en la e n Seccin 5.3 se explica que aadir 1 es parte de obtener el complemento a 2). o n Por tanto, el circuito tiene dos terminales de control: una etiquetada ADD para realizar una suma ordinaria y otra etiquetada INC para incrementar el contenido del acumulador en una unidad. Considrese la operacin del circuito digital de la Figura 5.5. Si la seal e o n ADD tiene valor 1, entonces INC debe tener valor 0. Es decir, solo una de estas dos seales de control puede tener valor de 1 en un momento dado. n En tal situacin, el bit bi se aplica en la entrada bi del sumador completo o (SC). Si el i-simo bit de B tiene valor 1, entonces bi = 1; si tiene valor 0, e entonces bi = 0. Adems, una entrada de cada compuerta AND a y b tiene a valor 1, y por lo tanto: Ji = si Ki = s i En tal caso, el ip-op JK funciona como un ip-op D. De hecho, este circuito por lo pronto funciona igual a una de las etapas de la ALU en la Figura 5.3. Ahora bien, supngase que ADD = 0 e INC = 1. Una entrada a la o compuerta AND e tiene valor 0, por lo que el bit bi no pasa por la compuerta. El circuito an funciona como un sumador con entrada cero, excepto por u 133

bi

e
si SC ci ci bi ai c i1 c i1

i1
i i

i i

a d b

Ki

ADD INC
c0

i1

CLK
Figura 5.5: Etapa de la ALU que realiza ya sea la suma o el incremento.

134

una diferencia. La entrada c0 del primer sumador no se utiliza durante la suma, ya que no hay acarreo de la columna ms a la derecha. Cuando INC a = 1, entonces tal entrada tiene valor de 1. Ntese que el primer sumador o completo toma la suma b0 + a0 + c0 . Por lo tanto, una entrada c0 acta de u la misma forma en que acta b0 . As cuando INC = 1, entonces c0 = 1, lo u , que hace que un 1 se sume al valor almacenado en el acumulador. Despus e del siguiente pulso de reloj, tal nmero se almacena en el acumulador. u Ntese las dos conexiones etiquetadas i1 y i1 . Supngase que el ipo o op JK fuera reemplazado por el ip-op con las compuertas OR de la Figura 5.4. En tal caso, la salida de la compuerta AND a en la Figura 5.5 se conectar a la compuerta OR por su entrada i1 . De manera similar, la an salida de la compuerta AND b se conectar a la compuerta OR , entrada a i1 . Ahora bien, supngase que todas las dems entradas i y i en la Figura o a 5.4 tienen valor 0. El circuito funcionar exactamente como el circuito de a la Figura 5.5, ya que si i y i tienen valor 0, entonces: Ji = si Ki = s i tal y como originalmente se deseaba. En conclusin, la inclusin de las como o puertas OR no cambia la operacin del circuito ya que todas las dems o a entradas i y i tienen valor 0. De hecho, la presencia de las compuertas OR permite obtener las diferentes funciones de la ALU que se requieren. Ntese que cuando ADD = 0 e INC = 0, entonces la salida es i = i = 0. o Ahora bien, en cuanto a la operacin de las compuertas OR y conciero ne, las entradas i1 y i1 podr quitarse o dejar de considerarse, mientras an que las otras entradas a las compuertas pueden utilizarse para obtener otras diferentes funciones.

5.6.2.

Limpieza (CLEAR)

Si se desea limpiar el registro acumulador, es decir, poner un valor 0 en todos y cada uno de sus bits, entonces se utiliza el circuito que se muestra en la Figura 5.6. En este caso, Ji = 0 (ntese que no hay entrada a J). Cuando o CLR = 1, entonces Ki = 1, y por lo tanto, el ip-op se coloca en estado Qi = 0 al siguiente pulso de reloj. Cuando se reemplaza el ip-op por el circuito de la Figura 5.4, la entrada CLR se aplica en la entrada i2 . Todas 135

las dems entradas i y i deben tener valor 0. Por lo tanto, con CLR = 1, a se tiene que Ji = 0 y Ki = 1, y la limpieza deseada ocurre (ntese que la o entrada i2 es innecesaria, ya que su valor es 0).
i2 i2

Qi Q i

0 CLR

Ki

Figura 5.6: Etapa de la ALU que realiza la limpieza del acumulador.

5.6.3.

AND lgica o

Hay ocasiones cuando se desea realizar operaciones lgicas utilizando o como entradas los valores del registro B y el acumulador (bi y ai ). Considrese la operacin AND. El i-simo bit del nmero binario B se compara e o e u con la salida Qi , que es el i-simo bit almacenado en el acumulador. Si bi e y Qi tienen ambos valor 1, entonces el valor de Qi permanece siendo 1. Si cualquiera de los dos, o ambos bi Qi , tienen valor 0, entonces Qi toma o valor 0. El circuito que realiza tal operacin se muestra en la Figura 5.7. o
bi

i i

Ki

i3

AND

Figura 5.7: Etapa de la ALU que realiza la AND lgica. o Ntese que si AND = 1 y bi = 1, entonces i3 = 0, y por lo tanto, el o estado del ip-op no cambia. Si Qi = 1, ste permanece con ese valor. De e manera similar, si Qi = 0, entonces el estado permance igual. Por otro lado, si bi = 0, entonces cuando AND = 1, se tiene que Ki = 1 y Ji = 0, por lo que al siguiente pulso de reloj, Qi = 0. Si AND = 0, entonces i3 = 0, lo que hace que no haya cambio en el estado del ip-op. 136

Si se reemplaza el ip-op de la Figura 5.4 con i3 conectado a la entrada correspondiente de la compuerta OR , el circuito funciona tal y como se ha descrito. Ntese que si AND = 0, entonces i3 = 0, por lo que esta entrada o no interere con las otras entradas.

5.6.4.

OR lgica o

La operacin OR lgica se realiza de la siguiente manera: el bit bi de B o o se compara con el bit Qi almacenado en el acumulador. Si cualquiera de los dos o ambos tienen valor de 1, entonces se coloca un valor de 1 en el i-simo e ip-op del acumulador en el siguiente pulso de reloj. Si ambos, Qi y bi tienen valor 0, entonces se coloca un 0 en Qi . Por lo tanto, Qi permanece sin cambio a menos que bi = 1 y Qi = 0. Solo entonces Qi toma valor de 1. Un circuito que realiza esta operacin se muestra en la Figura 5.8. o
bi

i4

i i

OR
0

Ki

Figura 5.8: Etapa de la ALU que realiza la OR lgica. o Cuando OR = 1 y Qi = 1 entonces Qi permanece con valor 1, independientemente del valor de bi . Si OR = 1 y Qi = 0 con bi = 1 entonces al siguiente pulso de reloj, Qi toma el valor de 1. As el circuito opera correc, tamente la OR lgica. Ntese que si OR = 0, entonces i4 = 0. De este o o modo, se puede reemplazar el ip-op por el ip-op de la Figura 5.4.

5.6.5.

XOR lgica o

La operacin XOR lgica se realiza mediante comparar el bit bi de B o o con el bit Qi del acumulador. Si cualquiera de ellos, Qi bi tienen valor 1, o entonces, despus del siguiente pulso de reloj, se almacena un valor de 1 en e el ip-op. Si ambos bi y Qi tienen valor 0, o si ambos bi y Qi tienen valor 1, al siguiente pulso de reloj, Qi toma valor 0. Un circuito que implementa este comportamiento se muestra en la Figura 5.9. 137

bi i5

i i

Ki

XOR
i5

Figura 5.9: Etapa de la ALU que realiza la XOR lgica. o Si XOR = 1 y bi = 1, entonces, despus del pulso de reloj, el estado del e ip-op cambia. As si Qi = 0, resulta en que Qi = 1; de manera similar, si , Qi = 1, el resultado es Qi = 0. Esto va de acuerdo con la operacin XOR. o Tambin, si XOR = 1 y bi = 0, si Qi = 0, entonces Qi permanece en ese e estado; si Qi = 1, entonces tambin permanece en tal estado. Finalmente, e si XOR = 0, entonces i5 = 0 y i5 = 0, por lo que el ip-op puede substituirse por el ip-op en la Figura 5.4.

5.6.6.

Corrimiento a la derecha

Comenzando con las operaciones sobre los contenidos del acumulador, se inicia discutiendo las operaciones de corrimiento. Estos circuitos son similares en su operacin al circuito de la Figura 3.30. Para correr los contenidos o del acumulador a la derecha, la entrada de cada ip-op debe provenir de la salida del ip-op inmediatamente a su izquierda. El circuito utilizado se muestra en la Figura 5.10.
i6 De Q i+1

i i

RIGHT Ki
i6 De Q i+1

Figura 5.10: Etapa de la ALU que realiza el corrimiento a la derecha. Ntese que el ip-op ms a la izquierda no tiene entrada. Para darle una o a entrada se reemplazan Qi+1 y Q de la Figura 5.10 por entradas externas. i+1 As el acumulador funciona como un registro de corrimiento. , 138

Ahora bien, cuando RIGHT = 1, entonces el corrimiento ocurre. Si RIGHT = 0, entonces i6 = i6 = 0, y no hay corrimiento. De nuevo, es posible reemplazar el ip-op por el circuito de la Figura 5.4.

5.6.7.

Corrimiento a la izquierda

El circuito que corre los contenidos del acumulador a la izquierda es esencialmente el mismo que el circuito para corrimiento a la derecha, excepto que ahora las entradas provienen del ip-op inmediatamente a la derecha. La entrada del ip-op ms a la derecha consiste de una entrada externa a y su complemento. Un circuito que reliza el corrimiento a la izquierda se muestra en la Figura 5.11. De nuevo, ntese que cuando LEFT = 0, entonces o i7 = i7 = 0, por lo que se puede reemplazar el ip-op por el circuito de la Figura 5.4.
i7 De Q i1

i i

LEFT Ki
i7 De Q i1

Figura 5.11: Etapa de la ALU que realiza el corrimiento a la izquierda.

5.6.8.

Complemento

El circuito que se muestra en la Figura 5.12 muestra cmo se puede o complementar todos los bits almacenados en el acumulador. Este es ultil para obtener el complemento a 2. El ip-op se conecta como un ip-op T. Cuando COMP = 1, cambia el estado a su valor complemento. De nuevo, ntese que cuando COMP = 0, se tiene que i8 = i8 = 0, por lo que o tambin se puede reemplazar el ip-op por el circuito de la Figura 5.4. e

5.6.9.

Conexin de entradas o

Ya que se han considerado un nmero de operaciones, recurdese que u e cuando los circuitos de las Figura 5.5 a 5.12 se conectan juntos, solo una seal n de control puede tomar el valor de 1 en cualquier momento, mientras que el resto debe permanecer con valor 0. De hecho, por ahora es notorio que en 139

i8

i i

COMP Ki
i8

Figura 5.12: Etapa de la ALU que realiza complemento. lugar de utilizar un solo ip-op, se utiliza la conexin de la Figura 5.4, donde o hay dos compuertas OR conectadas a las entradas J y K. Por lo tanto, cada una de las Figuras 5.5 a 5.12 es una parte que se han dividido en los puntos de conexin marcados como ik y ik , que se conectan a las entradas de las o compuertas OR como se indica en la Figura 5.4. Cada operacin funciona o como se ha descrito en las secciones anteriores. Por ejemplo, supngase que o ADD = 1, y todas las dems seales de control tienen valor 0. Por lo tanto: a n

i4 = i5 = i6 = i7 = i8 = i3 = i5 = i6 = i7 = i8 = 0 Y por lo tanto:

Ji = i1 Ki = i1 Esto es exactamente la condicin para el funcionamiento del circuito de o la Figura 5.5, y signica que una operacin de suma se realiza. Una consideo racin similar puede tenerse con todas y cada una de las otras operaciones o y seales de control. n

5.6.10.

Inspeccin de salidas o

En esta seccin se discuten dos operaciones de la ALU que proveen de o informacin sobre el valor almacenado en el acumulador, pero no cambian o los datos almacenados de ninguna forma: inspeccin negativa y de cero. o Inspeccin negativa o Para esta inspeccin, se desea una seal de salida que indique un valor de o n 1 si el nmero almacenado en el acumulador es negativo, y 0 de otra forma. Se u 140

supone que se utiliza una representacin de complemento a 2. As el nmero o , u es negativo si el bit ms signicativo tiene valor de 1, y ser positivo si tiene a a valor 0. Por lo tanto, slo se requiere examinar el estado del ip-op ms a o a la izquierda del acumulador para determinar si el nmero es negativo. u Un circuito que cumple con esta funcin se muestra en la Figura 5.13. o La seal de salida se marca como NEG, de modo que si NEG = 1, entonces n 1 tiene el valor de QN . Ya que QN es el bit almacenado ms a la izquierda, a 1 tiene valor de 1 cuando el nmero sea negativo, y tiene valor de 0 cuando u el nmero sea positivo o cero. u
1

NEG

N N

KN

Figura 5.13: Circuito de inspeccin negativa. o

Inspeccin de cero o Tambin, frecuentemente es necesario vericar si el valor almacenado en e el acumulador es 0. Si tal es el caso, entonces se desea saber si: Q0 = Q1 = Q2 = = QN = 0 En este caso, si: Q = Q = Q = = Q = 1 0 1 2 N El circuito de la Figura 5.14 realiza la inspeccin de cero. Cuando la o salida ZERO tiene valor de 1, entonces 2 tiene valor de 1 si y solo si se satisface la expresin anterior. Si 2 = 0 cuando ZERO = 1, entonces el o valor almacenado en el acumulador no es 0. Ntese que cuando ZERO = 0, o la salida 2 tiene valor 0. 141

ZERO

N N

1 1

0 0

KN

K1

K0

Figura 5.14: Circuito de inspeccin de cero. o

5.6.11.

Conexin de salidas o

En las dos secciones anteriores se han tratado dos salidas correspondientes a las inspecciones negativa y de cero. Comnmente, las ALU tienen una u sola salida para ambas operaciones. Si ZERO = 1, entonces la salida da el resultado de la inspeccin de cero. Similarmente, si NEG = 1, entonces se o da la salida de inspeccin negativa. Tal unica salida puede obtenerse de las o seales 1 y 2 , como se muestra en la Figura 5.15. Recurdese que las dos n e operaciones de inspeccin no pueden efectuarse al mismo tiempo. o
1

Figura 5.15: Circuito que provee una sola salida para las inspecciones negativa y de cero. As se termina de discutir una ALU completa que realiza muchas opera, ciones. Sin embargo, no se han discutido todas las posibles operaciones que una ALU puede realizar, sino ms bien, se han expuesto las ms comunes. a a Ms importante an, es que la comprensin de esta ALU debe permitir el a u o comprender otras ALU, an cuando stas realicen otras operaciones. En el u e siguiente cap tulo se discute cmo la ALU se inserta dentro de una compuo tadora digital completa.

142

Cap tulo 6

La computadora digital
El objetivo de este cap tulo es hacer una descripcin tan completa como o sea posible de la operacin de una computadora digital, tanto desde el punto o de vista del hardware como del software. Comenzando con la organizacin o general de una computadora, se discute la forma en que las instrucciones se almacenan, la naturaleza y desarrollo de un lenguaje de mquina, y la a tarea prctica de escribir un programa en lenguaje de mquina. Tambin se a a e describen, en general, el lenguaje ensamblador y los lenguajes de alto nivel.

6.1.

Organizacin de una computadora digital o

El diagrama de bloques de la Figura 6.1 puede utilizarse para describir la organizacin general de una computadora digital. Cuenta con cuatro unidao des bsicas. Todas las operaciones se realizan en la unidad lgica-aritmtica a o e (ALU). En una computadora pequea, esta unidad consiste del tipo de elen mentos descritos en la Seccin 5.6, posiblemente con registros adicionales; la o ALU de muchas computadoras (hasta en computadoras pequeas) frecuenn temente contiene varios registros acumuladores. Anteriormente ya se han discutido todos los tipos de circuitos que se utilizan normalmente en una ALU t pica. En la Seccin 5.6 se muestra que la ALU realiza las operaciones mediante o seleccionar de un conjunto de seales de control, tales como ADD, CLEAR n y OR. Estas seales se generan por la unidad de control, que recibe sus insn trucciones de un programa. Algunas unidades de control son ms complejas a que otras. Por ejemplo, en la Seccin 5.3 se discute la substraccin mediante o o complementar el sustraendo, sumarle 1 y sumar el resultado al minuendo. 143

Unidad de Control

Dispositivos de Entrada y Salida

Memoria

Unidad Logico Aritmetica

Unidad Central de Proceso

Figura 6.1: Diagrama de bloques de una computadora digital bsica. a De este modo, tres instrucciones deben proveerse a la ALU: complemento, incremento y suma. Si la unidad de control fuera una muy simple, las tres instrucciones tendr que proveerse por el programa mismo. Con una an unidad de control ms compleja, muy probablemente solo requiera una insa truccin de substraccin. La propia unidad de control se encargar entonces o o a de generar las tres seales de control apropiadas, en la secuencia adecuada, n y en los tiempos precisos. Adems de controlar el ujo de datos desde y hacia los dispositivos de a entrada y salida, la unidad de control tambin dirige las acciones de lectura e y escritura de la memoria. La unidad de control tambin contiene el reloj e maestro que se encarga de sincronizar la operacin de todas las partes de o la computadora. Ntese la l o nea punteada de la Figura 6.1, que conjunta la unidad de control y la ALU. En muchas computadoras, ambas unidades se encuentran unidas en un solo circuito integrado. En tal caso, este circuito se conoce como microprocesador. De cualquier modo, la ALU y la unidad de control juntas se consideran componentes de la unidad central de proceso (central processing unit, o simplemente, CPU). A su vez, la memoria puede considerarse dividida en dos partes: la unidad de memoria principal (main memory unit o MMU) y la memoria auxiliar. La MMU es una memoria de acceso aleatorio como las que se discuten en 144

el Cap tulo 4. En las computadoras pequeas, esta unidad consiste de una n memoria semiconductora. La memoria auxiliar, por otro lado, consiste de discos y cintas, como las descritas en el mismo Cap tulo 4. Para poder utilizar una computadora, es necesario proveerle de programas y datos. Despus de que el procesamiento se ha llevado a cabo, la e computadora a su vez debe ser capaz de proveer los resultados. La comunicacin con la computadora es funcin de los dispositivos de entrada y salida. o o El dispositivo de entrada ms comn es el teclado, en el cual un programador a u puede escribir, letra por letra, su programa. El teclado genera las secuencias de unos y ceros que la computadora interpreta. Otra forma de entrada puede ser mediante discos y cintas, en los que las secuencias de unos y ceros ya se encuentran almacenados. Ntese que las cintas y los discos pueden o considerarse tanto como dispositivos de entrada y salida, as como memo ria auxiliar. Si su funcin es proveer datos o programas, o si los resultados o del procesamiento nalmente se almacenan en ellos, entonces se les considera dispositivos de entrada/salida; si almacenan valores como resultados intermedios, entonces puede considerrseles como parte de la memoria. a Existen otros tipos especiales de dispositivos de entrada. Por ejemplo, las lectoras de los supermercados pueden leer los cdigos de barras que o representan los precios de los art culos. Estos lectores proveen de informacin o a una computadora, la cual al nal obtiene el total de la compra, pero puede adems realizar actividades ms complejas, como utilizar la informacin de a a o los art culos comprados para manejar el control de inventarios. El dispositivo de salida ms comn es la pantalla. Esta no es otra cosa a u mas que un tubo de rayos catdicos (cathodic ray tube simplemente CRT) o o parecida a un receptor de televisin. Otro dispositivo de salida comn es la o u impresora, que permite obtener la salida en hojas de papel. En muchos casos, la entrada y salida de una computadora se manejan de forma enteramente diferente a lo que se describe aqu Por ejemplo, los . datos de entrada pueden provenir de sensores de temperatura, luz o humedad colocados en lugares espec cos de un aparato o un edicio. La salida puede consistir entonces en seales que controlen actuadores, los cuales echan a n andar calefactores o humidicadores en el propio aparato o edicio. 145

6.1.1.

Buses

Aun cuando slo se muestran dos l o neas conectando los varios componentes de una computadora digital en la Figura 6.1, en realidad tales conexiones se realizan mediante un nmero de pequeos alambres que van de las termiu n nales de un componente a las terminales de otro. Esta coleccin de alambres o se conoce con el nombre de bus. Supngase que la computadora usa palabras o de 16 bits. Es necesario entonces que exista un alambre en el bus por cada bit de la palabra. En la Seccin 4.1 se explica que debe haber una l o nea de entrada por cada direccin binaria utilizada por la memoria. Por ejemplo, en o la Figura 4.3 se tienen dos terminales de entrada para las direcciones de una memoria de cuatro palabras. Adems, debe haber una terminal de seleccin a o del circuito, y nalmente, terminales que conduzcan las seales de lectura y n escritura en memoria. Todas estas l neas constituyen conexiones adicionales en el bus. En la Seccin 5.6 se discuten el uso por separado de l o neas de control para cada operacin de la ALU. Cada una de estas l o neas de control deben tambin incluirse en el bus, adems de otras l e a neas de control, como por ejemplo, conexiones para la seal de reloj. Ya que los circuitos de la n computadora utilizan corriente directa, el bus debe contener tambin l e neas de alimentacin elctrica, normalmente de 5 volts (marcado como Vcc ) y 0 o e volts (llamado tierra o GND). Finalmente, para permitir la expansin de o la computadora, como por ejemplo incrementar la capacidad de memoria, el bus debe contener l neas extra. Parecer que no se requiere que todas las l a neas de conexin pasen por too dos los componentes de la computadora. Sin embargo, para evitar problemas de conexin entre ellos, se hace que todo componente tenga toda conexin o o disponible, aun cuando no requiera utilizarla. De hecho, normalmente en la actualidad el bus de casi todas las computadoras, pero especialmente en las computadoras pequeas, consiste en un conjunto de alambres de metal n impresos en una tarjeta plstica llamada tarjeta madre (motherboard). Esta a tarjeta provee de acceso a todas las terminales de la computadora, ya que se pueden colocar conectores a ella. Por ejemplo, nuevos componentes pueden aadirse mediante conectarlos al bus. n

146

6.2.

Instrucciones de memoria transmisin de ino formacin o

En la Seccin 5.6 se discuten varias operaciones que la ALU es capaz de o realizar sobre valores binarios. En la Seccin 6.5 se describe estas operaciones o como instrucciones en lenguaje de mquina que, tomndolas en la forma a a secuencial de un programa en lenguaje de mquina, dirigen su operacin. Por a o lo pronto, en esta seccin se discuten los detalles de cmo las instrucciones o o se almacenan en la computadora, en particular las instrucciones espec cas que se utilizan para controlar a la memoria. Primeramente, se considera cmo se direcciona la memoria. En la Seco cin 4.1 se menciona que la direccin de la palabra a leer o escribir de la o o memoria se presenta como un nmero binario. Hay una terminal por cau da d gito binario de la direccin. Para direccionar la memoria, las seales o n apropiadas deben colocarse en las l neas de direccin del bus. Estas seales o n se proveen de un registro especialmente diseado para almacenar, en binan rio, las direcciones de memoria. A este registro se le conoce como registro de direccin de memoria (memory address register o MAR). El MAR, eno tonces, normalmente contiene el valor binario de la direccin de la palabra o que se lee o escribe de la memoria. En la Figura 4.3 se muestran un par de ip-ops que, considerados en arreglo, forman un registro que puede ser utilizado como MAR. Otro registro asociado con la memoria principal es el registro separador de memoria (memory buer register o MBR). Este registro tiene la funcin o de almacenar la palabra que se lee de se escribe a la memoria. o Considerando ambos registros MAR y MBR, se requieren apenas unas cuantas instrucciones para manejar la memoria: 1. Escribe la palabra almacenada en el MBR a la memoria principal, en la direccin almacenada en el MAR. o 2. Lee la palabra almacenada en la direccin almacenada en el MAR, y o colcala en el MBR. o 3. Limpiar el MAR o copiar una palabra al MAR. A veces, en computadoras sencillas, estas instrucciones se combinan con otras. Por ejemplo, se discute ms adelante una instruccin para almacenar a o los contenidos del acumulador en una localidad de memoria que se especica 147

en la instruccin misma. En realidad, tal instruccin sola puede tomar el o o lugar de varias otras instrucciones, una para almacenar los contenidos del acumulador en el MBR, y entonces otra para almacenar los contenidos del MBR en una localidad expec ca de memoria. Sin embargo, esta secuencia de instrucciones podr ser automticamente generada por la unidad de control. a a De hecho, algunas computadoras antiguas no cuentan con un MBR, por lo que utilizan otros registros, como el acumulador.

6.2.1.

Estructura de la palabra

Al considerar la estructura de las palabras almacenadas en la memoria, recurdese que hay dos tipos de informacin binaria almacenada en la e o memoria: instrucciones y datos. Los datos pueden ser un valor numrico, e que puede ser de punto otante o un nmero sin exponente; o puede ser un u cdigo para informacin alfanumrica. o o e Cada palabra almacenada en la memoria que representa una instruccin o normalmente contiene dos partes: un cdigo de instruccin y una direccin o o o de memoria; sin embargo, en algunas computadoras, se utilizan palabras ms complejas, conteniendo ms informacin. La instruccin propiamente a a o o dicha es el cdigo de la instruccin. De hecho, cada instruccin tiene un o o o cdigo binario que la representa. Por ejemplo, 000001 podr indicar que o a los contenidos de una direccin de memoria dada deben sumarse con el o contenido del acumulador. Para ilustrar esto, se trabaja con una palabra de 16 bits, como la que se muestra en la Figura 6.2
Campo de instruccion Campo de direccion

1 (a)

Campo de instruccion 8 bits (b)

Campo de direccion 8 bits

Figura 6.2: (a) Una palabra de 16 bits con un campo de instruccin de 8 o bits y un campo de direccin de 8 bits; (b) una representacin ms simple o o a de esta palabra. 148

La palabra se divide en dos sub-palabras, llamadas campos (elds). Un campo se utiliza para el cdigo de instruccin (operational code u op-code), o o y el otro para la direccin de memoria. Considrese la palabra espec o e ca que se muestra en la Figura 6.2: 00000001 001001102 Los primeros 8 bits representan el cdigo de la instruccin, y los 8 bits o o nales representan una direccin de memoria. Por ejemplo, los primeros 8 o bits (000000012 ) pueden indicar a la computadora para sumar los contenidos de la direccin de memoria con los contenidos del acumulador, mientras o que los ultimos 8 bits (001001102 ) especican una direccin de memoria. o Por lo tanto, la palabra 00000001 001001102 signica sumar el nmero binau rio contenido en la direccin 001001102 con el nmero binario almacenado o u previamente en el acumulador. La palabra 00000001 001001102 es un ejemplo de un enunciado (statement) de un programa en lenguaje de mquina, un programa escrito en a binario que dirige la operacin de la computadora. Para eliminar posibles o confusiones o errores al utilizar nmeros binarios, se acostumbra escribir el u programa en su equivalente hexadecimal, como por ejemplo: Campo de instruccin o 00000001 01 Campo de direccin o 00100110 26

Binario Hexadecimal

La representacin hexadecimal es ms fcil de manejar, y muchos proo a a gramas en lenguaje de mquina se escriben en hexadecimal. Sin embargo, el a programa real se encuentra, por supuesto, en binario. Hasta aqu se discute una palabra que contiene un campo de instruccin , o y un campo de direccin. La estructura de esta palabra se utiliza para dirigir o a la computadora para realizar una operacin, posiblemente en conjuncin o o con una direccin de memoria. En el ejemplo anterior, la instruccin causa o o que el contenido de la direccin de memoria dada se sume con el contenido o del acumulador. Otra instruccin puede utilizarse, igualmente, para almao cenar el contenido del acumulador en una direccin de memoria espec o ca. En los ejemplos subsecuentes se utiliza esta estructura de palabra dado que es simple. Esto elimina una gran cantidad de detalles innecesarios 149

en la discusin. Sin embargo, pueden utilizarse otros tipos de estructuras o de palabra. Por ejemplo, algunas computadoras utilizan palabras con dos campos de direccin. Suponiendo que se desea transferir el contenido de una o direccin de memoria a otra direccin de memoria, una palabra con dos o o campos de direccin podr ser muy conveniente para expresar esto en una o a sola instruccin. o Adems, existen otras formas de instrucciones para las computadoras. a Muchas computadoras utilizan 8, 16, 32 o hasta 64 bits. Si 8 o ms bits se a utilizan para especicar una direccin en memoria, entonces una palabra de o 8 bits no puede proveer espacio para un campo de instruccin (op-code) y un o campo de direccin. De tal modo, muchas computadoras utilizan secuencias o de palabras para desarrollar instrucciones. Por ejemplo, supngase que hay o dos palabras en la secuencia. La primer palabra puede proveer del cdigo o de operacin, mientras que la segunda puede especicar la localidad de meo moria. De hecho, muchas computadoras utilizan 16 bits para especicar una direccin de memoria, con lo que se tiene que pueden direccionarse hasta o 65,536 localidades de memoria. En este caso, una instruccin se compone de o tres palabras de 8 bits: una para el cdigo de operacin, y dos palabras para o o la direccin de memoria. o Al programar una computadora, la estructura de sus instrucciones debe ser conocida previamente. Normalmente, los manuales de instruccin del o procesador de la computadora contienen muchos de estos detalles.

6.3.

Ejecucin de instrucciones o

Para ilustrar la ejecucin de instrucciones, a continuacin se escribe un o o programa simple en lenguaje de mquina, especicando algunas instruccioa nes adicionales. Para nes didcticos, se utilizan palabras de 16 bits. Las a instrucciones son: sumar los contenidos de una direccin en memoria con el acumulador o (0000 00012 = 0116 ) limpiar el acumulador (0000 00102 = 0216 ) transferir el contenido del acumulador a una direccin dad de memoria o (0001 01002 = 1416 ) detener el cmputo (0111 01112 = 7716 ) o 150

Con estas instrucciones, se escribe un programa sumamente simple. Se supone que la computadora ejecuta las instrucciones en orden secuencial, es decir, ejecuta la instruccin en la primera direccin de memoria, luego o o la instruccin en la segunda direccin, etc. Para este programa, se listan o o tanto las instrucciones como la direccin de memoria donde se encuentran o almacenadas. Se supone que ya se encuentran en la memoria de trabajo de la computadora. Se presentan tanto la notacin binaria como la notacin o o hexadecimal. Direccin o Binario 00000001 00000010 00000011 00000100 00000101 00010000 00010001 Hexadecimal 01 02 03 04 05 10 11 Palabra Binario 0000001000000000 0000000100010000 0000000100010001 0001010000010010 0111011100000000 0000000000000011 0000000000000100 Hexadecimal 0200 0110 0111 1412 7700 0003 0004

Al operar este programa, recurdese que los primeros 8 bits de la instruce cin especican el cdigo de operacin de la instruccin, y que los ultimos o o o o 8 bits especican la direccin en memoria. La primera instruccin es: o o 020016 Esta es la instruccin para limpiar el acumulador. El valor en el campo o para la direccin de memoria no tiene signicado aqu y los dos ultimos o , d gitos hexadecimales se ignoran por parte de la computadora. De hecho, podr utilizarse cualquier valor en esas posiciones. a La siguiente instruccin es: o 011016 Los primeros 8 bits (0116 ) indican que el nmero almacenado en la diu reccin de memoria 1016 debe sumarse con el contenido del acumulador. El o nmero almacenado en la direccin 1016 es: u o 00000000000000112 = 000316 Por lo tanto, despus de que esta instruccin se ejecuta, el valor 000316 e o se coloca en el acumulador (almacenado, por supuesto, en binario). 151

La siguiente instruccin es: o 011116 Esta instruccin especica que el contenido de la direccin de memoria o o 1116 deben sumarse con el contenido del acumulador. El nmero almacenado u en la direccin 1116 es: o 00000000000001002 = 000416 Al nalizar la ejecucin de esta instruccin, el nmero almacenado en el o o u acumulador es el resultado de la suma del nmero previamente almacenado u (000316 ) ms 000416 . La operacin es como sigue: a o 000316 + 000416 = 000716 La siguiente instruccin es: o 141216 Los primeros 8 bits (1416 ) indican que el contenido del acumulador debe almacenarse en la direccin de memoria 1216 . Tras la ejecucin de esta o o instruccin, la palabra almacenada en la direccin de memoria 1216 es: o o 00000000000001112 = 000716 Finalmente, se ejecuta la instruccin: o 770016 Los primeros 8 bits (7716 ) causan que el cmputo se detenga. El resulo tado de este simple programa es, entonces, sumar dos valores numricos en e diferentes localidades de memoria y escribir el resultado en una tercera localidad de la memoria. En este simple programa no se toma en cuenta ninguna salida de datos. Esto se considera ms adelante. a Por lo pronto, se consideran algunas operaciones de la computadora en un mayor detalle. El cdigo de operacin informa a la computadora para o o que realice alguna operacin espec o ca. Cuando la instruccin se ejecuta, a o la ALU se le provee de las seales de control apropiadas. Esto se ejemplica n utilizando una computadora sencilla. Supngase que los 8 bit ms a la izo a quierda de la instruccin (el cdigo de operacin) se almacena en un registro, o o o conocido como registro de instruccin (Instruction Register o simplemente o 152

IR). El resto de los bits de la instruccin se consideran almacenados en el o MAR. Ahora bien, tomando solo el contenido de IR, ste se da como entrae da a un decodicador de instrucciones (instruction decoder). Este dispositivo convierte la informacin almacenada en IR al conjunto apropiado de seales o n de control. Un decodicador de instrucciones muy simplicado se muestra en la Figura 6.3. Este circuito puede decodicar un cdigo de operacin de o o la forma: b7 b6 b5 b4 b3 b2 b1 b0

Del registro de instruccion (IR)

b0 b1 b2 b3 b4 b5 b6 b7 b0 b1 b2 b3 b4 b5 b6 b7

ADD

CLR

Figura 6.3: Parte de un decodicador de instrucciones. Por ejemplo, si el cdigo de operacin es 000000012 , entonces la salida de o o la compuerta AND a toma el valor de 1, lo que hace que la seal de control n 153

ADD tome valor 1 y el resto de las seales de control tengan un valor de 0. n Similarmente, si el nmero almacenado en IR es 000000102 , entonces slo la u o salida de la compuerta AND b tiene valor 1, y la seal de control CLR se n produce. Cuando se ejecuta un programa, el nmero almacenado en cada localidad u de memoria es una secuencia de ceros y unos. Tal nmero no provee de u ninguna informacin que indique si se trata de un cdigo de operacin o un o o o dato. Esto se indica slamente por el orden en que cada palabra se lee. Por o ejemplo, supngase que se lee 011016 de una localidad de memoria, y que esto o se trata como una instruccin. Tal instruccin indica que los contenidos de o o la localidad de memoria con la direccin 1016 se suman al nmero contenido o u en el acumulador. El contenido le de la localidad con direccin 1016 es do o tratado, entonces, como un dato. De este modo, se considera que el contenido del primer byte representa un cdigo de operacin, mientras que el contenido o o de la direccin de memoria se considera un dato. En seguida se explica cmo o o la computadora puede ir siguiendo la secuencia de instrucciones. La computadora cuenta con un registro de un solo bit (en realidad, un ip-op) conocido como registro de bsqueda-ejecucin (fetch-execute regisu o ter o FER). Su funcin es indicar a la computadora si se encuentra buscando o una instruccin de la memoria o ejecutando una instruccin (durante lo cual o o la informacin que se extrae de la memoria son datos). Si el valor contenido o en FER es 1, entonces la computadora considera que la informacin que o se extrae de la memoria es una instruccin. Si el contenido de FER es 0, o entonces la informacin tomada de la memoria se trata como dato. Antes o de describir con mayor detalle la operacin del FER, es necesario tomar en o cuenta otro registro, llamado contador de programa (program counter o PC), el cual contiene la direccin de la instruccin que se est ejecutando. Cada o o a vez que una instruccin se ejecuta, se debe pasar a travs de una secuencia o e de pasos. Adems de los pasos propios para realizar la instruccin, hay pasos a o adicionales que llevan el orden secuencial de la ejecucin, entre los cuales o est incrementar el nmero (direccin) almacenado en el PC en una unidad. a u o Considrese ahora la ejecucin de un programa. Cuando se inicia la opee o racin, el contenido del FER tiene valor 1. Adems, el contenido del PC o a toma el valor de la direccin del inicio del programa, por ejemplo 000000012 o (se trabaja aqu con direcciones de memoria de 8 bits). Ya que el contenido del FER es 1, la informacin binaria tra de la memoria es tratada como o da una instruccin. Como el contenido del PC es 000000012 , entonces se busca o 154

el contenido de la localidad de memoria con la direccin 0116 . Los 8 bits o ms signicativos se colocan en el IR, mientras que los 8 bits menos siga nicativos se ponen en el MAR. En este momento, la computadora puede ejecutar la instruccin, de modo que el contenido del FER toma el valor 0. o Por otro lado, el contenido de IR se proporciona al decodicador, y as se , generan las seales de control apropiadas para la realizacin de la instrucn o cin. La direccin almacenada en el MAR se lee, y la instruccin descrita o o o por el cdigo de operacin almacenado en IR se lleva a cabo. As se ejecuta o o , la instruccin. Al terminar la ejecucin, el contenido del FER toma el valor o o de 1 de nuevo, y el contenido de PC se incrementa, de modo que toma el valor 000000102 = 0216 . Ahora, se busca la informacin binaria contenida o en la localida de memoria con direccin 0216 , tratndola como instruccin. o a o Y el proceso se repite una y otra vez por cada instruccin del programa. o Ntese que la secuencia de pasos para la ejecucin de instrucciones descrita o o aqu puede tener variaciones, como por ejemplo, el contenido del PC podr a incrementarse mucho antes. En la descripcin del programa sencillo, el PC se ve afectado por una o operacin de incremento que aumenta su contenido binario en una unidad. o Sin embargo, las computadoras digitales cuentan con otras operaciones que afectan el contenido del PC, no necesariamente para solo incrementarlo, sino para cambiar su contenido completamente. Esto signica que el programa no necesariamente se ejecuta como una secuencia r gida de pasos, sino que puede incluir ciclos o selecciones, lo que aumenta grandemente la versatilidad de la programacin de la computadora. o Recurdese que la computadora no distingue la diferencia entre instruce ciones y datos. Por ejemplo, supngase que la tercera instruccin del proo o grama se cambiara por: 010116 En tal caso, el contenido de la localidad de memoria con direccin 0116 , o que es el cdigo de operacin de la instruccin para limpiar el acumulador, o o o se suma al contenido del acumulador. Esto no tiene sentido, pero la computadora no tiene manera de interpretarlo. La computadora funciona como se le instruye. As dado que el valor en la direccin 0116 es 020016 , tras la , o ejecucin de esta instruccin el contenido del acumulador es: o o 020016 + 000316 = 020316 Despus de la ejecucin, este valor se almacena en la direccin 1216 . e o o 155

En este ejemplo, se lee una instruccin y se utiliza como dato. Puede o haber serias consecuencias por comenter un error as Supngase que en lugar . o de leer una instruccin, accidentalmente se escribe un dato en una localidad o de memoria de una instruccin que todav no ha sido ejecutada. Cuando o a se llega a la direccin de memoria de tal instruccin, muy probablemente no o o se encuentra un cdigo de operacin vlido. En tal caso, el decodicador de o o a instrucciones no genera ninguna seal de control. Esto hace que se detenga el n cmputo, indicando un error dif de detectar. Ms an, si por casualidad o cil a u se tiene un cdigo de operacin vlido almacenado, el resultado del cmputo o o a o no ser el esperado, por lo que la situacin de error persiste de una manera a o ms sutil. a

6.4.

La computadora digital completa

En esta seccin, y tras las descripciones y consideraciones anteriores, se o puede discutir por n una computadora digital completa. Se describe una computadora digital de 16 bits a la que se ha hecho referencia anteriormente, notando que las teor de operacin pueden aplicarse a una computadora as o con cualquier tamao de palabra. La Figura 6.4 muestra un diagrama de n bloques de una computadora muy pequea y sencilla. Aun cuando se muesn tran slo l o neas interconectando los varios componentes de la computadora, recurdese que tales l e neas representan buses, compuestos de varios alambres individuales. En seguida, se discuten los varios componentes de la computadora. Solo se mencionan brevemente aqullos que han sido discutidos pree viamente con mayor detalle. La unidad lgico-aritmtica (ALU) se relaciona con el registro acumulao e dor, y se constituye de varios circuitos lgicos para obtener las operaciones o deseadas. Se muestra tambin un registro adicional: el registro B. Este puee de ser utilizado para almacenar algn nmero que se opera conjuntamente u u con el contenido del acumulador. En general, la ALU puede accesar otros registros, lo que le permite realizar operaciones ms complejas, como multia plicacin y divisin. Ntese que la salida del acumulador puede ser redirigida o o o a la unidad de control, y a partir de aqu a varias otras partes de la compu, tadora, como podr ser la unidad de memoria. a La unidad de memoria (MU) contiene a la memoria principal. Ya que se suponen 8 l neas para el direccionamiento de memoria, se utiliza una pequea n memoria de 256 palabras. Las memorias de computadora, por lo general, utilizan much sima ms memoria, por lo que sta se hace disponible mediante a e 156

Unidad de Control Reloj Maestro C Registro de Instruccion IR (8 bits) Contador de Programa PC (8 bits)

Unidad de Memoria Principal Registro Separador de Memoria MBR (16 bits) Memoria Principal 256 palabras de 16 bits

Figura 6.4: Diagrama de bloques de una pequea computadora digital. n

Registro Busqueda Ejecucion FER (1 bit)

Controlador principal con decodificador de instrucciones, generadores de secuencia y circuitos multiplexores

Controlador de memoria Registro de direccion de memoria MAR

157

Registro B

Unidad Logico Aritmetica ALU

Control de Entrada/Salida

Registro de Entrada/Salida IOR (24 bits)

Acumulador

Terminal

Unidad de Cinta

Unidad de Disco duro

Unidad de Entrada/Salida

multiplicar las l neas de direccionamiento. Sin embargo, el tamao de 256 n palabras es slo ilustrativo de este ejemplo de computadora sencilla. Por otro o lado, el control de memoria se discute ms a fondo en el Cap a tulo 4. Una direccin proveniente de la unidad de control se coloca en el MAR; si se da o una instruccin de lectura de memoria, entonces el contenido en la localidad o direccionada por el MAR se pasa al MBR; si se tiene una instruccin de o escritura, entonces el contenido del MBR se copia a la localidad de memoria direccionada. La unidad de control (CU) dirige la operacin de toda la computadora. o Contiene el decodicador de instrucciones (Figura 6.3), el cual traduce el cdigo de operacin relativo a la instruccin en seales de control que o o o n manipulan a la ALU, la memoria, los registros, y dems componentes de la a computadora. Tambin en la unidad de control se encuentran el IR, el FER e y el PC, que se discuten en la seccin anterior. o El reloj maestro es tambin parte de la unidad de control. Previamente, e se ha descrito cmo el reloj maestro mantiene la sincronizacin entre las dio o ferentes partes de la computadora. En realidad, dentro de una computadora existen ms de una secuencia de pulsos de reloj, debido a que ciertas para tes de la computadora tienden a funcionar a velocidades muchos mayores que otras partes. En general, la memoria es mucho ms lenta que la unidad a central de proceso. Normalmente, se realiza una instruccin de lectura de o una sola palabra de la memoria, seguida muchas otras operaciones que no involucran a la memoria. Ser un desperdicio de tiempo si todas las opea raciones se realizaran a la velocidad de un ciclo de la memoria, y por tal razn, el reloj maestro normalmente se utiliza para generar varios conjuntos o de pulsos a diferentes frecuencias. Por ejemplo, la Figura 6.5 muestra dos conjuntos de pulsos, unos ms rpios que otros. Sin embargo, la relacin a a o entre ellos se mantiene constante. As C1 podr utilizarse como reloj de , a las partes ms veloces de la computadora, mientras que C2 podr utilizarse a a para la memoria. Esto presupone, por supuesto, que hay varias operaciones de las partes ms veloces de la computadora por cada ciclo de memoria. a La unidad de control, por tanto, debe contener los circuitos necesarios para asegurar que la memoria no sea llamada antes de que las otras operaciones hayan concluido. La unidad de entrada/salida contiene todos los dispositivos de entrada/salida. En el diagrama de bloques de la Figura 6.4 slo se muestran una o terminal, una unidad de cinta, y una unidad de disco duro. En realidad, puede haber un gran nmero de estos tipos de dispositivos u otros dispositiu 158

C1

(a) C2

(b)

Figura 6.5: Pulsos de reloj (a) con temporizacin normal; (b) con temporio zacin ms lenta, para usarse con la memoria. o a vos, como impresoras, gracadores, escaners, etc. Ms a n, pueden utilizarse a u otros dispositivos de entrada/salida diseados para comunicar informacin n o ms especializada, como se menciona en la Seccin 6.1 respecto a sensoa o res para medir la temperatura, y a la vez, actuadores que la computadora controla. Aun cuando la Figura 6.4 solo muestra un registro asociado con la unidad de entrada/salida, tal unidad puede contar en realidad con una mayor capacidad de almacenamiento. Los dispositivos de entrada/salida son normalmente mucho mas lentos que las dems partes de la computadora. Por a ejemplo, la computadora puede producir datos binarios a una velocidad mucho mayor de que la pantalla puede presentarlos. Los datos, en este caso, se almacenan en una memoria del dispositivos de entrada/salida, conocida como buer. De este modo, la pantalla toma los datos de su buer, a su propio paso. De hecho, el buer puede ser una seccin de la RAM. Si no o hubiera buer, cada vez que se producieran datos de salida, la computadora tendr que hacer una pausa hasta que la pantalla terminara de presentar a todos los datos. El uso del buer de entrada/salida eliminia la necesidad de muchas de este tipo de pausas.

159

Cuando se coloca datos en el buer, tales datos ocupan espacio de almacenamiento. Cuando los datos se leen del buer y se despliegan por una pantalla, este espacio de almacenamiento se vac y el buer puede recibir a, ms datos. Si el buer se llena, entonces no puede recibir ms datos, y la a a computadora debe hacer una pausa. Estos y otros detalles se discuten ms a adelante, al presentar la programacin de los dispositivos de entrada/salida. o

6.5.

Programacin en lenguaje de mquina o a

En esta seccin se presenta un pequeo lenguaje de mquina, y se mueso n a tra su utilizacin en el desarrollo de programas muy sencillos. Los lenguajes o de mquina no representan un estndar, y el que se presenta aqu no es un a a lenguaje para una computadora en particular. Sin embargo, las ideas que se describen a continuacin son aplicables a todas las computadoras. El lenguao je de mquina propuesto aqu se basa en mucho en las instrucciones que se a dan a la ALU de la Seccin 5.6. Adems, se aaden otras instrucciones utiles o a n que se incluyen en la mayor de las computadoras. Sin embargo, inicialmena te no se especican instrucciones de entrada/salida. Estos se discuten ms a adelante. Recurdese que, en esta computadora sencilla, la palabra de una instruce cin contiene 16 bits. Los 8 bits ms signicativos toman valores binarios de o a las instrucciones de la siguiente tabla. Los 8 bits menos signicativos normalmente contienen direcciones de memoria. Para algunas instrucciones, la direccin de memoria no resulta un dato apropiado, y se le da un valor de o 000000002 . En realidad, podr drsele cualquier valor, ya que para efectos a a prcticos la computadora lo ignora. a

160

Instruccin o Suma el contenido de la localidad de memoria dada con el acumulador Limpiar el acumulador AND Lgico o OR Lgico o XOR Lgico o Corrimiento a la derecha Corrimiento a la izquierda Complemento Incremento Vericacin o negativa Vericacin o de cero Colocar en la direccin de o memoria dada Salto incondicional Salto si cero Salto si negativo Continua Detener el cmputo o

Cdigo Binario o

Cdigo Hexadecimal o

00000001 00000010 00000011 00000100 00000101 00000110 00000111 00010000 00010001 00010010 00010011

01 02 03 04 05 06 07 10 11 12 13

00010100 00100000 00100001 00100010 00000000 01110111

14 20 21 22 00 77

Las primeras once instrucciones se discuten en la Seccin 5.6, en trminos o e de operaciones de la ALU, y se detallan en las Secciones 6.2 y 6.3. Adems, a la instruccin para almacenar el contenido del acumulador en una direccin o o dada de memoria (1416 ) y la instruccin para detener el cmputo (7716 ) o o tambin se discuten en la Seccin 6.3. En seguida, tras describir brevemente e o las nuevas instrucciones, se muestra la programacin en lenguaje de mquina o a mediante algunos ejemplos de programas muestra. A la penltima instruccin, 0016 , se le llama continua. Esta instruccin u o o no hace nada, es decir, al llegar a ella la computadora simplemente procede a la siguiente instruccin. Aun cuando esta instruccin no parece tener o o ninguna aplicacin prctica, resulta muy util, sobre todo cuando es necesao a 161

rio introducir algunos tiempos de espera en el programa. Otras instrucciones nuevas son todas aqullas que involucran saltos. El salto incondicional causa e que el contenido del PC cambie. Recurdese que el PC contiene la direccin e o de la localidad de memoria en la cual la siguiente instruccin debe buscaro se. Normalmente, el PC slo se incrementa en una unidad. Sin embargo, o ocasionalmente el programador puede requerir repetir algn segmento de u instrucciones del programa, o evitarlo. El salto incondicional permite esto. Por ejemplo, considrese la instruccin: e o 00100000010000002 = 204016 Esta instruccin hace que el PC termine conteniendo el valor 4016 . De no o haber otra instruccin de salto en esta direccin, el PC sigue incrementndoo o a se en una unidad, como es normal. As la siguiente instruccin a ser ejecu, o tada es aqulla en la direccin 4116 . e o Las otras dos instrucciones de salto se les conoce como saltos condicionales. Funcionan en forma similar al salto incondicional, excepto que la ocurrencia del salto depende del valor almacenado en el acumulador. Por ejemplo, supngase que PC = 0416 y que se ejecuta la instruccin: o o 214216 Esta instruccin representa un salto si el valor almacenado en el acuo mulador es igual a cero. Si el contenido del acumulador es 0016 , entonces la siguiente direccin almacenada en el PC es 4216 . As la siguiente instruccin o , o a ejecutar se toma de esta direccin. Por otro lado, si el valor almacenado o en el acumulador no es cero, entonces el salto condicional es ignorado. Esto es, el PC toma el valor de 0516 , donde se busca la siguiente instruccin a o ejecutar. La instruccin salto si negativo trabaja esencialmente igual al salto si o cero, excepto en que ahora el salto ocurre si el contenido del acumulador es negativo.

6.5.1.

Programas simples

Para mostrar las ideas que se han discutido hasta ahora, a continuacin o se escriben dos programas en lenguaje de mquina. El objetivo no es propiaa mente ensear a programar, sino ms bien explicar el lenguaje de mquina n a a y la operacin de la computadora digital. o 162

En el primer programa se realiza la resta de un nmero N1 de otro u nmero N2 . Si el resultado es negativo, entonces se suma 1010 al nmero, u u mientras que si el resultado es positivo o cero, se le suma 510 . Despus de e hacer todo esto, al resultado se le aade otro nmero N3 . El programa y sus n u direcciones de memoria se presenta en la tabla siguiente.

Direccin o 1 2 3 4 5 6 7 8 9 A 50 51

Contenido binario 0000001000000000 0000000110010001 0001000000000000 0001000100000000 0000000110010010 0010001001010000 0000000101010111 0000000000000000 0000000110010011 0111011100000000 0000000101100010 0010000000001000

Contenido hexadecimal 0200 0191 1000 1100 0192 2250 0157 0000 0193 7700 0162 2008

Comentario Limpiar el acumulador Lee sustraendo Complementar sustraendo Sumar 1 al sustraendo (Complemento a 2) Sumar minuendo Salto si negativo Suma el contenido de 5716 al acumulador Continua Suma el contenido de 9316 al acumulador Detener Sumar el contenido de 6216 al acumulador Salto incondicional a la direcccin 0816 o (PC = 0816 ) Dato 516 = 510 Dato A16 = 1010 Dato 116 = 110 Dato 716 = 710 Dato 916 = 910

57 62 91 92 93

0000000000000101 0000000000001010 0000000000000001 0000000000000111 0000000000001001

0005 000A 0001 0007 0009

Considrese la operacin de tal programa. Los nmeros N1 , N2 y N3 se e o u almacenan en las direcciones de memoria 9116 , 9216 y 9316 , respectivamente. Los valores de estos nmeros son los siguientes: u 163

N1 = 116 = 110 N2 = 716 = 710 N3 = 916 = 910

En este punto, se revisa la operacin del programa paso a paso. La inso truccin en la direccin de memoria 116 causa que el acumulador se limpie, o o de tal modo que el valor inicial del acumulador es cero. La segunda instruccin (en la direccin de memoria 216 ) hace que el contenido de la direccin o o o de memoria 9116 se sume al contenido del acumulador. Este valor es N1 , el cual debemos restar de N2 . Para hacer esto, se obtiene el complemento a 2, mediante complementar y sumarle una unidad. Las siguientes dos instrucciones en las localidades de memoria 316 y 416 realizan tales operaciones. De este modo, hasta este punto, el acumulador almacena el valor equivalente a N1 . La siguiente instruccin (en la direccin de memoria 516 ) provoca que o o el contenido de la direccin de memoria 9216 se sume al acumulador. Esto o suma N2 con N1 , de modo que se obtiene la resta deseada N2 N1 . Es en este punto donde se decide si el resultado es negativo y se salta con la instruccin en la direccin 616 . Esto signica que si el valor almacenado en o o el acumulador es negativo, entonces el ujo del programa cambia (salta) a la direccin 5016 . Si el nmero almacenado en el acumulador no es negativo, o u entonces la siguiente instruccin que debe ejecutarse es aqulla contenida en o e la direccin 716 . Tal instruccin causa que el contenido de la direccin de o o o memoria 5716 se sume al acumulador. Como se ha almacenado un valor de 510 en tal direccin, entonces este valor se suma al contenido del acumulador. o As se tiene ahora en el acumulador el valor N2 N1 + 510 . , La instruccin en la direccin 816 es continua. La computadora la obtiene, o o y prosigue a ejecutar la siguiente instruccin. Ms adelante, se detalla que o a en realidad esta instruccin se requiere como un punto seguro para saltar de o vuelta al cuerpo principal del programa. La siguiente instruccin a ejecutar es aqulla contenida en la localidad o e de memoria con la direccin 916 . Esta instruccin hace que el contenido de o o la localidad de memoria 9316 se sumen con el contenido del acumulador. Hasta este punto, entonces, se tiene que en el acumulador se ha realizado la operacin N2 N1 +510 +N3 . El cmputo naliza, y la computadora deber o o a 164

detenerse. En realidad, un programa ms prctico requiere que se presente a a el resultado al usuario, por lo que ser necesario aadir instrucciones para a n tal n. Pero tales instrucciones no se han incluido en este ejemplo, dado que todav no se ha discutido la salida de datos. a Ahora bien, considrese de nuevo el salto en la direccin 616 . Supngase e o o que se tienen valores diferentes almacenados en las direcciones 9116 y 9216 , de modo que la diferencia N2 N1 resulta negativa. Al realizar el salto, resulta que la siguiente instruccin a ejecutar es aqulla almacenada en la direccin o e o 5016 . Esta instruccin suma el contenido de la direccin 6216 , que es un 1010 , o o al contenido del acumulador. Por lo tanto, si N2 N1 es negativo, se realiza la instruccin para obtener en el acumulador el valor N2 N1 + 1010 . o Ntese que la ultima instruccin se encuentra en la direccin de memoria o o o 5016 . Despus de ejecutarla, la siguiente instruccin a ejecutar es aqulla e o e contenida en la direccin 5116 , que es un salto incondicional que coloca o la direccin 816 en el PC. La instruccin siguiente a ejecutar es, entonces, o o aqulla contenida en la direccin de memoria 816 . Esta es la instruccin e o o continua, que en realidad no hace nada, pero que sirve aqu como un punto seguro de retorno. As la siguiente instruccin a ejecutar es aqulla en la , o e direccin 916 , que como se ha dicho anteriormente, se encarga de sumar o el valor N3 al contenido del acumulador, y el cmputo se detiene. De este o modo, el resultado almacenado en el acumulador si N2 N1 es negativo es el valor N2 N1 + 1010 + N3 . Supngase ahora que se desea cambiar los datos y volver a ejecutar el o programa. Como los datos se almacenan en las direcciones 9116 , 9216 y 9316 , se requiere entonces slamente cambiar los valores que se encuentran alo macenados, sin necesidad de modicar el resto del programa. Esto es muy conveniente, particularmente si el programa es muy largo. En seguida se considera otro ejemplo de un programa simple en lenguaje de mquina. El programa anterior, aun cuando realiza lo estipulado, no hace a algo que se pudiera considerar util. De este modo, se propone realizar un programa con un objetivo mejor denido. Supngase que se desea realizar o la suma de los primeros 100 nmeros enteros: u 1 + 2 + 3 + 4 + + 98 + 99 + 100 Un programa que hace esta operacin directamente tendr muchos pao a sos, y ser muy tedioso para programar. Sin embargo, la siguiente tabla a 165

presenta un programa en lenguaje de mquina que utiliza los saltos para a acortar el programa y eliminar la repeticin. o Direccin o 1 2 3 4 5 6 7 8 9 A B C D 80 81 82 90 Contenido hexadecimal 0200 0181 1100 1481 1000 1100 0180 2190 0200 0181 0182 1482 2001 0065 0000 0000 7700 Contenido binario 0000001000000000 0000000110000001 0001000100000000 0001010010000001 0001000000000000 0001000100000000 0000000110000000 0010000110010000 0000001000000000 0000000110000001 0000000110000010 0001010010000010 0010000000000001 0000000001100101 0000000000000000 0000000000000000 0111011100000000

La operacin de este programa comienza limpiando el contenido del acuo mulador con la instruccin en la direccin 116 . La siguiente instruccin en la o o o direccin de memoria 216 provoca que el contenido de la localidad de memoo ria con direccin 8116 se sume con el acumulador. Al principio, tal nmero o u tiene valor cero. El contenido de esta localidad de memoria es el siguiente nmero a ser sumado. La siguiente instruccin (en la direccin 316 ) le suma u o o 1 al contenido del acumulador. Con la siguiente instruccin, en la direccin o o 416 , el contenido del acumulador ahora se almacena en la direccin 8116 . El o valor anterior en esta direccin se pierde. o El nmero que se acaba de almacenar en la direccin 8116 eventualmente u o se aade a la suma, pero antes es necesario vericar si no excede el valor de n 10010 . Para hacer esto, el contenido del acumulador se complementa (con la instruccin en la direccin 516 ) y se incrementa (con la instruccin en o o o la direccin 616 ). As se ha calculado el complemento a 2 del nmero a o , u vericar. La instruccin en la direccin 716 hace que el nmero almacenado o o u en la direccin 8016 se sume al complemento a 2 obtenido. Ntese que el valor o o almancenado en esta direccin es el valor 10110 . Si despus de la operacin el o e o 166

contenido del acumulador es cero, no se debe continuar sumando el contenido de la localidad de memoria 8116 con la suma. La siguiente instruccin, en la o direccin 816 , es un salto si se verica un valor cero en el acumulador. De o hecho, si el nmero almacenado en la direccin 8116 es 10110 , el resultado de u o la diferencia es cero, por lo que la siguiente instruccin a ejecutarse despus o e del salto se encuentra en la direccin 9016 . La instruccin almacenada en o o esta direccin es 7716 , que signica detener el proceso. As slamente si o , o el nmero que se almacena en la localidad de memoria 8116 tiene el valor u 10110 , el cmputo se completa. Pero si el valor almacenado en tal direccin o o es menor que 10110 , entonces el proceso prosigue. Regresando a la instruccin de salto en la direccin 816 , supngase que o o o que el salto falla, es decir, el contenido del acumulador no es cero. La siguiente instruccin a realizarse es aqulla contenida en la direccin 916 , y o e o sta causa que el acumulador se limpie. e Siguiendo con el programa, la instruccin en la direccin A16 hace que o o el contenido de la direccin 8116 se sume con el contenido del acumulador. o Ntese que el valor en esta direccin es 110 . La instruccin en la direccin o o o o B16 hace que el contenido de la direccin 8216 se sume al contenido del o acumulador. Tal contenido en la direccin 8216 es todav cero. o a Ahora bien, la instruccin de la direccin C16 hace que el contenido del o o acumulador se coloque en la direccin de memoria 8216 . Este valor es 110 , o de modo que sta es la primera suma. e La siguiente instruccin en la direccin D16 hace que se salte incodicioo o nalmente a la direccin 116 . Por lo tanto, el programa regresa a la primer o instruccin, haciendo un ciclo. Si se va a travs del programa de nuevo, en o e esta ocasin se almacena un valor 210 en la direccin de memoria 8116 . Deso o pus de vericar que este nmero es menor que 10110 , tal valor se suma al e u nmero almacenado en la direccin 8216 (210 + 110 = 310 ). u o Si se va a travs del programa varias veces, en ciclos, es posible observar e lo siguiente: en cada ciclo se van sumando los valores 1, 2, 3, . . . a la suma. La suma acumulada se va almacenando en la direccin 8216 . Antes de sumarse, o el nmero se almacena en la direccin 8116 , de modo que antes de que se u o realice la suma, se verica si tal valor no es mayor que 6516 = 10110 , mediante realizar la resta usando el complemento a 2. Cuando el resultado de la resta sea cero, el proceso termina.

167

En caso de que se desee cambiar el programa para obtener la suma de los primeros N nmeros (1 + 2 + 3 + + N ), es necesario tan solo cambiar u el nmero almacenado en la direccin 8016 de 10110 al valor N + 110 . u o Como es el caso en los dos ejemplos anteriores de programas simples en lenguaje de mquina, antes de considerar los detalles para escribir un a programa, es necesario entender primero la idea bsica que debe realizarse, es a decir, el algoritmo que realiza. Por ejemplo, se podr expresar la idea bsica a a del ultimo programa de la siguiente forma. Se desea obtener el resultado de la suma de los 100 primero enteros. Al resultado se le puede dar el nombre de SUMA, y a un nmero entero, el nombre de N. As al inicio, se puede u , hacer que ambos, SUMA y N tengan valor 0. En seguida se incrementa N en una unidad. Es necesario vericar ahora que el valor de N sea menor que 10110 . Si este es el caso, entonces N se suma a SUMA, y el proceso se repite. Por otro lado, si N es igual a 10110 , entonces se detiene el proceso, y el valor de SUMA representa el resultado. La idea detrs de un programa puede representarse de varias maneras. a Un ejemplo utilizado tradicionalmente en varios cursos de programacin, es o el diagrama de ujo (ow chart). En general, se trata de una gura grca a que sirve para representar y entender de manera ms sencilla al programa, en a lugar de utilizar slamente una descripcin verbal. La Figura 6.6 muestra un o o ejemplo de la descripcin del programa anterior en trminos de un diagrama o e de ujo. Ntese cmo el diagrama describe el ujo de control del programa. El o o bloque con forma de diamante se utiliza cuando debe tomarse una decisin o (es decir, si hay un salto condicional). Si N 101 = 0, entonces se sale del bloque de decisin por la salida marcada con Si, y el proceso termina. En o caso contrario, si N 101 no tiene valor 0, se sale del bloque de decisin por o la salida con etiqueta No, se incrementa N en una unidad y la operacin o se repite.

6.5.2.

Salida de datos

En esta seccin se considera la salida de datos de la computadora mediano te el ejemplo de un programa sencillo. Cada dispositivo de entrada/salida se conecta a una tarjeta de interface (interface board), la cual a su vez se conecta con el bus de la computadora. La tarjeta de interface convierte la informacin digital del bus a alguna forma de informacin que pueda ser o o usada por el dispositivo de entrada/salida (y viceversa). Cada dispositivo 168

INICIO

SUMA = 0

N=0

Suma 1 a N

N101=0? Si

No

Suma N a SUMA

ALTO

Figura 6.6: Diagrama de ujo del algoritmo que suma los primeros 100 nmeu ros enteros.

169

de entrada/salida generalmente tiene su propia tarjeta de interface, pero frecuentemente una sola tarjeta puede usarse para muchos dipositivos. Es en las tarjetas de interface donde se encuentran los buers (memoria) asociados con los dispositivos de entrada/salida, y se utilizan para almacenar datos a enviar o recibir. En algunas computadoras, los buers son parte de la memoria principal. El bus conecta todas las tarjetas de interface, cada una de las cuales se conecta con su dispositivo de entrada/salida respectivo. Los dispositivos de entrada/salida, como terminales, impresoras, unidades de cinta, disco, etc., son llamados tambin con el nombre genrico de pee e rifricos (peripherals). e Supngase que en la computadora sencilla que se ha descrito hasta ahora, o todos los datos a salir deben colocarse en el acumulador y entonces, mediante la instruccin adecuada, se transere a las terminales del bus reservadas o para la entrada/salida. Para hacer esto, se utiliza la siguiente instruccin en o lenguaje de mquina: a 001100002 = 3016 La instruccin 3016 slo especica que hay datos por salir. Sin embaro o go, la instruccin tambin debe indicar cul dispositivo debe utilizarse, y o e a qu funcin debe realizar tal dispositivo. Por ejemplo, supngase que se tiee o o ne una unidad de cinta. La informacin es normalmente almacenada en la o cinta en forma de grupos de datos llamados bloques. Se puede, entonces, hacer la instruccin de tal modo que se le ordene a la unidad de cinta reo correr toda la cinta para comenzar con el primer bloque. Alternativamente, se puede hacer que la instruccin indique a la unidad de cinta que salte uno o o varios bloques de datos, de modo que nuevos datos puedan escribirse sin afectar los datos ya contenidos en la cinta. Como se considera para la computadora una palabra de instruccin con o 16 bits, entonces la forma de la instruccin de salida debe ser: o 00110000d3 d2 d1 d0 f3 f2 f1 f0 Los primerso 8 bits indican que se trata de una instruccin de salida. Los o bits di y fi son adicionales, e indican el tipo y funcin del dispositivo. De o hecho, los bits di se utilizan para indicar un cdigo del dispositivo de salida, o mientras que los bits fi indican si el primer bloque debe o no saltarse. Se propone el siguiente cdigo para diferentes dispositivos: o 170

Dispositivo Terminal Impresora Unidad de Disco Flexible Unidad de Cinta

Binario 0000 0001 0010 0011

Hexadecimal 00 01 02 03

Para las funciones de la unidad de cinta del ejemplo, se tienen las siguientes funciones: Funcin o Recorrer la cinta al inicio Saltar al siguiente bloque Binario 0001 0010 Hexadecimal 01 02

As si por ejemplo se desea desplegar datos en la terminal, la instruccin , o ser a: 00110000000000002 = 300016 En este caso, los ultimos dos bits no tienen un signicado denido, por lo que pueden ignorarse. O bien, supngase que se desea colocar un resultado en una cinta magntio e ca, y se desea que la cinta inicie desde el principio y se escriba sobre cualquier otra informacin que ya se encuentre en ella. Entonces, la instruccin ser o o a: 00110000001100012 = 303116 Por otro lado, si se desea saltar en la cinta hasta el ultimo bloque de datos y escribir nuevos datos despus, la instruccin tendr la forma: e o a 00110000001100102 = 303216 Para el caso de la unidad de disco exible habr instrucciones similares, a en cuyo caso la pista donde puede escribirse la salida puede especicarse. Todas las interfaces de entrada/salida se conectan a las mismas terminales del bus, que utilizan un decodicador similar al que se presenta en la Figura 6.3, causando que la interface del dispositivo apropiado se active y opere de forma adecuada. El decodicador recibe los bits: d3 d2 d1 d0 f3 f2 f1 f0 171

Esto env una seal de instruccin a la interface apropiada, de modo a n o que el dispositivo de entrada/salida correcto opere y permita la salida o entrada de datos. Cuando se da una salida de datos, primero se coloca una instruccin o de salida en las terminales del bus de entrada/salida. En seguida, los datos numricos binarios se colocan en las mismas terminales del bus. Ntese que e o esto nmeros de proveen en secuencia. Supngase que, en esta computadora u o sencilla, hay una instruccin que causa que el contenido del acumulador se o coloque en las l neas de entrada/salida del bus. Tal instruccin puede ser: o 011100002 = 7016 De este modo, primero se requiere la instruccin de salida, y enseguio da, la instruccin 7016 . Despus de esto, se coloca un dato de salida en o e el acumulador, y a continuacin, se da de nuevo la instruccin 7016 . Por o o ejemplo, supngase que se desea imprimir el nmero almacenado en la dio u reccin de memoria 9116 en la terminal, y adems, almacenar el nmero o a u 00110000000000002 = 300016 en la direccin de memoria 2616 (ntese que o o sta es la instruccin que opera sobre la terminal). Entonces, la salida de e o datos se realiza mediante ejecutar las siguientes instrucciones (en hexadecimal): 0200 0126 7000 0200 0191 7000

La primera instruccin limpia el acumulador. Enseguida se suma el cono tenido de la direccin 2616 al contenido del acumulador, lo que coloca la o instruccin de salida por terminal en el propio acumulador. La siguiente o instruccin (700016 ) causa la salida del contenido actual del acumulador soo bre las l neas del bus. El acumulador se limpia, y entonces se le colocan los datos numricos de salida. Ya que el acumulador se limpi anteriormene o te, ahora contiene los datos nmericos de salida. Enseguida, este nmero u u se provee a las l neas de entrada/salida. Ntese que este procedimiento de o 172

salida de datos puede variar de computadora a computadora. Sin embargo, entender este procedimiento debe permitir comprender los procedimientos en diferentes computadoras. De hecho, los detalles de salida de datos en una computadora dada pueden involucrar diferentes instrucciones, pero las ideas bsicas son esencialmente las mismas. a Los dispositivos de entrada/salida son comnmente mucho ms lentos u a que la operacin de la computadora. De hecho, es muy posible que los datos o se provean en una tasa ms rpida de lo que son impresos. El buer de a a entrada/salida (vase la Seccin 6.4) intenta resolver este problema. Sin e o embargo, si los datos se proveen lo sucientemente rpido, el buer puede a llenarse. Es por esto que la unidad de entrada/salida cuenta con un registro de un bit llamado bandera (ag). Si el buer se llena, la bandera toma valor 0; si el buer no est lleno y puede recibir ms datos, la bandera tiene valor 1. a a Cuando el valor de la bandera es 0, esto acta como una seal para la unidad u n de control y el proceso de salida entra en una pausa. Sin embargo, la salida de datos prosigue. Una vez que el registro de entrada/salida puede recibir ms datos, la bandera toma el valor de 1 y el proceso de salida continua. a Algunas computadoras tienen otras banderas ms sosticadas, conocidas a como interrupciones (interrupts). Estas seales causan que el proceso de n la computadora se detenga y prosiga despus si alguna accin o problema e o predecible ocurre en un dispositivo de entrada/salida. Por ejemplo, si la impresora se queda sin papel, el proceso se detiene. Se pueden escribir programas que reciban datos de entrada en momentos espec cos. En tal caso, los datos de entrada se colocan en el registro de entrada/salida, y cuando se da la instruccin apropiada de entrada, los cono tenidos de este registro se copian al acumulador. As se puede dar entrada , de datos cuando se requiera.

6.6.

Lenguaje ensamblador

Programar utilizando lenguaje de mquina resulta muy tedioso. El proa gramador debe recordar los cdigos de instruccin que corresponden a cada o o instruccin, o al menos, debe continuamente revisar su denicin. Por otro o o lado, en casi todas las computadoras reales la lista de instrucciones es mucho mayor que la denida para la computadora sencilla. Esto hace que la labor de utilizar las instrucciones sea muy dif cil. Ms an, el programador debe a u recordar en todo momento las direcciones de memoria donde se encuentran 173

almacenadas las variables y las instrucciones, lo que es particularmente dicultoso cuando entre las instrucciones se involucran saltos. Como un ejemplo de estos problemas, supngase que se requiere realizar la siguiente suma: o x =a+b+c+d Debe haber una localidad de memoria reservada para cada una de las variables x, a, b, c y d, y las direcciones de esas localidades deben en todo momento recordarse. Si se tiene un nmero relativamente pequeo de variau n bles, la tarea es ms o menos simple; sin embargo, en un programa grande, a con muchas variables, el programador debe entonces crear una tabla para recordar la posicin de las variables, lo que normalmente consume mucho o tiempo y esfuerzo. Para hacer la labor de programacin menos tediosa, se han desarrollado o otros tipos de lenguajes para el uso del programador, en lugar de utilizar lenguaje de mquina. En esta seccin, se discute el lenguaje ensamblador a o (assembly language), el cual est muy cercanamente relacionado con el lena guaje de mquina, pero resulta mucho ms fcil de utilizar por parte de los a a a programadores. Siempre que una computadora realiza alguna clase de proceso, un programa en lenguaje de mquina (binario o ejecutable) dirige su operacin. a o Consecuentemente, siempre que otra forma de lenguaje se utilice, sta debe e ser traducida a lenguaje de mquina. Un programa conocido como ensama blador (assembler) dirige la accin de la computadora, de modo que traduce o un programa del lenguaje ensamblador a lenguaje de mquina. El lenguaje a ensablador es, entonces, un conjunto de instrucciones que se utilizan para escribir un programa en ensamblador. A continuacin, primero se describe o un lenguaje ensamblador simple, y luego se comenta cmo la computadora o lo usa. Las instrucciones en lenguaje de mquina se realizan en trminos de a e cdigos binarios. En lenguaje ensamblador, los cdigos se reemplazan por o o pnemnicos (pnemonics), que comnmente son ms fciles de recordar que o u a a los cdigos binarios. Por ejemplo, en lugar de escribir 0116 = 000000012 para o la operacin de suma, simplemente se escriben las letras ADD (la palabra o inglesa para suma). Ntese que ADD es mucho ms fcil de recordar que o a a 00000001. Por supuesto, se considera aqu que se puede dar una secuencia de letras como entrada a la computadora. Esto implica el uso de los cdigos o mencionados en la Seccin 4.5. o 174

Enseguida, se presenta un lenguaje ensamblador sencillo. Ntese que, o como es el caso de los lenguajes de mquina, los lenguajes ensabladores no a tienen un estndar. De este modo, por convencin se utilizan tres letras para a o designar una instruccin en lenguaje ensamblador. De hecho, es conveniente o utilizar un nmero jo de letras para las instrucciones en lenguaje ensamblau dor, pero esto no siempre es necesario. En general, se puede pensar que una instruccin en ensamblador corresponde directamente con una instruccin en o o lenguaje de mquina. Ntese que los pnemnicos del lenguaje ensamblador a o o son mucho ms fciles de recordar que los cdigos binarios que representan. a a o Otra ventaja de utilizar lenguaje ensamblador es que el programador no tiene que recordar las direcciones en memoria de los datos almacenados. Tales valores se les da el nombre de variables, y como parte del lenguaje, puede drseles un nombre. Comnmente, tal nombre puede constar hasta de seis a u caracteres alfanumricos. e

Instruccin en o lenguaje de mquina a 01 02 03 04 05 06 07 10 11 12 13 14 20 21 22 70 77

Instruccin en o lenguaje ensamblador ADD CLE AND ORR XOR SHR SHL COM INC NEC ZEC PIM BRU BRZ BRN CON STP

Como ejemplo de un programa escrito en lenguaje ensamblador, a continuacin se re-escribe el programa del primer ejemplo de la Seccin 6.3, o o ahora en lenguaje ensamblador: 175

CLE ADD DATA1 ADD B PIM ANS STP DATA1:3 B:4 ANS:0 DATA1, B y ANS son nombres de variables. DATA1 es equivalente a especicar la direccin de memoria 1016 . Similarmente, se escribe B en lugar o de la direccin 1116 y ANS en lugar de 1216 . As el programador no requiere o , recordar las direcciones de memoria. En cualquier momento en que se hace referencia a DATA1, se utiliza la direccin adecuada de memoria. o Ahora bien, a continuacin se describe cmo la computadora trabaja soo o bre un programa escrito en lenguaje ensamblador para producir un programa en lenguaje de mquina. Se utiliza el programa ensamblador previamente a mencionado. Este programa se escribe slo una vez, y la mayor de los proo a gramadores no necesitan hacerle modicaciones. El ensamblador se carga en memoria de la misma forma en que se carga cualquier otro programa que ejecute la computadora. Enseguida, el programa en lenguaje ensamblador se le provee al ensamblador como datos de entrada. El ensamblador traduce el programa en lenguaje ensamblador a un programa en lenguaje de mquina, a y slo entonces se cuenta con un programa que puede ser ejecutado por la o computadora. Sin embargo, no fue necesario que el programador escribiera cdigo en lenguaje de mquina. Slo es necesario escribir un programa en o a o ensamblador. Se puede utilizar alternativamente el siguiente procedimiento: el ensamblador traduce el programa en lenguaje ensamblador a un programa en lenguaje de mquina que se almacena en memoria, de modo que ste ultimo a e puede a la vez almacenarse en, por ejemplo, un disco. Despus de esto, es e posible cargar el programa en lenguaje de mquina a partir del disco, y a ejecutarlo. De nuevo, el programador no requiere escribir su programa en lenguaje de mquina. a En este punto surge la pregunta: cmo trabaja un ensamblador? Reo curdese que cada enunciado en un programa en lenguaje ensamblador se le e provee como datos de entrada. Si se utiliza una terminal, cada letra genera un cdigo (vase Seccin 4.5), de modo que cada instruccin en lenguaje o e o o 176

ensamblador puede representarse por diferentes secuencias de ceros y unos. Cuando el ensamblador se carga en la computadora, cada cdigo se almacena o en una direccin diferente de memoria. De manera similar, cada cdigo que o o corresponde al programa en lenguaje ensamblador se almacena en otras direcciones de memoria. Ahora, cuando un enunciado del programa en lenguaje ensamblador se proporciona al ensamblador, su cdigo se compara con los o cdigos de las instrucciones en lenguaje ensamblador. Cuando se encuentra o un cdigo igual al cdigo de la instruccin, la instruccin correspondiente en o o o o lenguaje de mquina se obtiene y aade al programa en lenguaje de mquina a n a que se est generando. a Respecto a la transformacin de variables a direcciones de memoria, se o sabe que todas las variables utilizadas en un programa en lenguaje ensamblador se escriben siempre despus de una instruccin. As cualquier infore o , macin alfanumrica que siga despus de las tres letras de una instruccin o e e o puede identicarse como variable. El ensablador, entonces, requiere tomar en cuenta el nmero y tipo de variables, a n de apartar las direcciones u necesarias para almacenar las variables del programa. Durante la formacin del programa en lenguaje de mquina a partir de o a un programa en lenguaje ensamblador, es comn que este ultimo se lea dos u veces (aunque en algunas computadoras se lee unicamente una sola vez, y ya almacenado en memoria, se revisa dos veces). La primera lectura o pasada se utiliza para identicar todas las variables y establecer localidades de memoria para cada una de ellas. El programa se va revisando, y conforme se van hallando variables, se almacena su cdigo. El nombre usado en el o programa para la variable se almacena en una tabla de smbolos. Esta tabla eventualmente contiene tambin las direcciones en memoria de cada variable. e Una variable puede utilizarse muchas veces dentro del programa, pero puede aparecer solo una vez en la tabla de s mbolos. En el espacio de memoria del programa, debe haber localidades de memoria asignadas tanto para cada variable como para cada instruccin del o programa. Durante la primera pasada, una localidad de memoria se reserva para cada instruccin; las localidades de memoria para las variables se o reservan despus de reservar localidades para las instrucciones. Considree e se por ejemplo el programa anterior en lenguaje ensamblador. La primera instruccin es CLE. Una palabra de memoria se ha reservado para esta inso truccin. Es importante notar que las localidades de memoria se reservan en o orden estrictamente secuencial. La primera instruccin recibe la direccin o o de memoria con menor valor numrico, por ejemplo, 000000012 = 0116 . A e 177

continuacin, se encuentra la instruccin ADD DATA1. Se reserva la direco o cin de memoria 0216 para ADD, mientras que se da entrada a DATA1 en o la tabla de s mbolos, pero todav no se ha reservado una localidad de mea moria para ella. Similarmente, al encontrarse ADD B se reserva la direccin o 0316 para ADD, y se da entrada a B en la tabla de s mbolos. La instruccin o siguiente, PIM, se coloca en la direccin 0416 , y se da entrada a la variable o ANS en la tabla de s mbolos. Cuando se encuentra la instruccin STP, se o le asigan la direccin 0516 . Ahora bien, se encuentra la cadena DATA1:3. o Los dos puntos indican que DATA1 es una variable. Es hasta ahora que se le asigna la direccin en memoria 0616 a DATA1. Tal informacin se aade o o n a informacin sobre DATA1 en la tabla de s o mbolos. En forma parecida, se reserva la direccin 0716 para B, cuyo valor es 4, y nalmente, se reserva la o direccin 0816 para ANS, cuyo valor es 0. o Como es notorio, se da un valor inicial a cada dato mediante los dos puntos (:). Este caracter indica que el nmero que le sigue es el valor que u debe almacenarse en la direccin de memoria de la variable adecuada. Ntese o o que debe haber una inicializacin para cada una de las variables, aunque esto o no sea del todo cierto para todo ensamblador. Por ejemplo, despus de que e la suma se ha realizado, se coloca el resultado en la variable llamada ANS. Se requiere, entonces, que ANS tenga un valor conocido desde un principio, por lo que se hace la indicacin ANS:0 para ello. Esto es necesario para o reservar memoria para la variable ANS. Ntese que el valor 0 es arbitrario. o Se puede utilizar cualquier valor. Una vez que ANS se coloca en memoria, su valor se re-escribe una y otra vez. Se supone aqu que las localidades de memoria se asignan en orden, partiendo de una direccin inicial 0116 . Sin o embargo, varios ensabladores pueden variar en tal procedimiento. En la primera pasada del ensamblador se reservan todas las localides de memoria necesarias para el programa. Durante la segunda pasada los pnemnicos se convierten a sus cdigos equivalentes en lenguaje de mquio o a na, y se almacenan en las direcciones de memoria reservadas para las instrucciones. Esta es la primera parte de la palabra en lenguaje de mquina. a Si el nombre de una variable est asociado con una instruccin, entonces se a o le busca en la tabla de s mbolos, de modo que la direccin de la variable se o vuelve la segunda parte de la palabra en lenguaje de mquina. Este proceso a se repite paso a paso, instruccin por instruccin, hasta que todo el prograo o ma en lenguaje ensamblador se ha convertido en una programa en lenguaje de mquina, cuyas instrucciones se almacenan en secuencia. a

178

Despus de ejecutar el programa ensamblador, el programa generado se e escribe generalmente en disco. La memoria principal se limpia, y el nuevo programa est listo para ejecutarse. a Puede ser que la memoria no sea lo sucientemente grande para almacenar el ensamblador, la tabla de s mbolos y el programa en lenguaje de mquina. Pero si la memoria es lo sucientemente grande para completar la a primera pasada, entonces se puede hacer lo siguiente: se puede iniciar la segunda pasada, pero si la memoria se llena, entonces la segunda pasada entra en una pausa. La memoria que contiene la parte del programa en lenguaje de mquina se puede transferir a disco, despus de lo cual se libera parte a e de la memoria, y se continua con la segunda pasada. Este proceso se puede repetir mientras la memoria se llene, y hasta que el programa en lenguaje de mquina termine de generarse. a

6.7.

Lenguajes de alto nivel

Aun cuando el lenguaje ensamblador es mucho ms fcil de utilizar que a a el lenguaje de mquina, resulta todav muy tedioso de programar. Por a a ejemplo, supngase que se desea escribir un programa que evale la siguiente o u ecuacin: o x = (a + b)(c d)/(a b) Para realizar esta simple ecuacin se requiere escribir muchas l o neas de cdigo en ensamblador, lo que requiere un gran esfuerzo para el programador. o Es por esto que se han desarrollado otro tipo de lenguajes que permiten al programador trabajar con elementos de un nivel de abstraccin ms alto o a que lo que puede expresarse utilizando lenguaje ensamblador. Existen en la actualidad un gran nmero de lenguajes de programacin de alto nivel u o que pueden utilizarse para expresar operaciones cada vez ms complejas. a Ejemplos de estos lenguajes son Fortran, Pascal, y C. A continuacin, se muestra cmo la expresin anterior puede evaluarse o o o utilizando lenguaje C. int a = 3, b = 4, c = 5, d = 3, x = 0; x = (a + b)*(c - d)/(a - b); printf(x); Ntese que el asterisco (*) es el s o mbolo utilizado en C para representar la multiplicacin. o 179

El programa que realmente se ejecuta en la computadora es un equivalente de este programa, pero en lenguaje de mquina. Cuando se utiliza a un lenguaje de alto nivel, el programa fuente (escrito en el lenguaje de alto nivel) se provee como datos bsicos para la construccin de su equivalena o te en lenguaje de mquina, de manera muy similar a como un programa a en lenguaje ensamblador son datos para el ensamblador. Sin embargo, el programa que convierte un programa fuente a su equivalente en lenguaje de mquina es mucho ms complejo y sosticado que el ensamblador, ya a a que una sola instruccin en lenguaje de alto nivel equivale a una secueno cia de instrucciones en lenguaje de mquina. Los programas que convierten a un programa en lenguaje de alto nivel a lenguaje de mquina pueden ser a compiladores (compilers) o intrpretes (interpreters). Aun cuando permiten e una mayor exibilidad en la labor de programacin, el uso de lenguajes de o alto nivel implica el seguimiento de reglas rigurosas y restrictivas para el programador. Sin embargo, los lenguajes de alto nivel siguen siendo la opcin ms adecuada para el desarrollo de programas, comparativamente con o a el lenguaje ensamblador y el lenguaje de mquina. a

180

Bibliograf a
1. D.D. Gajski. Principios de Diseo Digital. Pearson Education, 1997. n 2. M.S. Ghausi. Circuitos Electrnicos discretos e integrados. Interameo ricana, 1987. 3. J.P. Hayes. Diseo de Sistemas Digitales y Microprocesadores. McGrawn Hill, 1984. 4. M. Morris Mano. Arquitectura de Computadoras. Prentice-Hall, 1983. 5. M. Morris Mano. Diseo Digital. Prentice-Hall, 1987. n 6. M. Morris Mano. Lgica Digital y Diseo de Computadores. Prenticeo n Hall, 1979. 7. M. J Murdocca y V.P. Heuring. Principios de Arquitectura de Computadoras. Prentice-Hall, 2002. 8. W. Stallings. Organizacin y Arquitectura de Computadores. Prenticeo Hall, 2000. 9. H. Taub and D. Schilling. Digital Integrated Electronics. McGraw-Hill, 1977. 10. R.J. Tocci and L.P. Laskowski. Microprocessors and Microcomputers. Prentice-Hall, 1982. 11. C.A. Wiatrowski and C.H. House. Circuitos Lgicos y Sistemas de o Microcomputadoras. Limusa, 1987.

181