Está en la página 1de 69

Departamento de Arquitectura

Instituto de Computacin

Universidad de la Repblica Montevideo - Uruguay

Notas de Terico

Arquitectura del Computador 1


(Versin 4.1d - 2009 - Parte 1)

Arquitectura del Computador 1

Notas de Terico

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Contenido:
1 SISTEMAS DE NUMERACIN ....................................................................................................... 5 1.1 Introduccin .............................................................................................................................. 5 1.2 Sistemas posicionales .............................................................................................................. 5 1.3 Sistemas con base ................................................................................................................... 5 1.4 Conversin de base de enteros ................................................................................................ 6 1.5 Conversin de nmeros con parte fraccionaria........................................................................ 8 1.6 Caso Particular bases 8 y 16 .................................................................................................... 9 CODIGOS Y ERRORES................................................................................................................ 11 2.1 Introduccin ............................................................................................................................ 11 2.2 Deteccin y correccin de errores .......................................................................................... 11 2.3 Paridad.................................................................................................................................... 12 2.4 Distancia ................................................................................................................................. 13 2.5 Bits de Redundancia............................................................................................................... 15 2.6 Cdigos de Hamming ............................................................................................................. 15 2.7 Cdigos de Redundancia Cclica............................................................................................ 16 REPRESENTACION INTERNA DE DATOS ................................................................................. 17 3.1 Introduccin ............................................................................................................................ 17 3.2 Tipo Carcter .......................................................................................................................... 17 3.3 Tipo String............................................................................................................................... 20 3.4 Tipo Entero sin signo .............................................................................................................. 20 3.5 Tipo entero con signo ............................................................................................................. 21 3.5.1 Valor absoluto y signo ..................................................................................................... 21 3.5.2 Complemento a uno ........................................................................................................ 22 3.5.3 Desplazamiento............................................................................................................... 22 3.5.4 Complemento a dos ........................................................................................................ 23 3.6 Tipo decimal y decimal empaquetado .................................................................................... 26 3.7 Representacin Punto Fijo ..................................................................................................... 27 3.8 Tipo Moneda........................................................................................................................... 27 3.9 Representacin Punto Flotante .............................................................................................. 27 3.9.1 Estndar IEEE 754 de punto flotante .............................................................................. 27 3.9.2 Operaciones en Representacin Punto Flotante............................................................. 28 3.9.3 Perdida de Precisin ....................................................................................................... 28 ALGEBRA DE BOOLE.................................................................................................................. 30 4.1 Introduccin. ........................................................................................................................... 30 4.2 Axiomas. ................................................................................................................................. 30 4.3 Modelo aritmtico. .................................................................................................................. 31 4.4 Propiedades............................................................................................................................ 31 4.5 Modelo lgico.......................................................................................................................... 33 4.6 Modelo circuital. ...................................................................................................................... 34 4.7 Expresiones booleanas. ......................................................................................................... 34 4.8 Funciones booleanas.............................................................................................................. 35 4.9 Conectivas binarias................................................................................................................. 35 4.9.1 OR exclusivo. .................................................................................................................. 35 4.9.2 Suma de productos cannicos. ....................................................................................... 36 4.9.3 Productos de sumas cannicas. ..................................................................................... 37 4.10 Operadores lgicamente completos....................................................................................... 37 4.11 Simplificacin.......................................................................................................................... 37 4.11.1 Mtodo algebraico. .......................................................................................................... 37 4.11.2 Mtodos sistemticos. ..................................................................................................... 38 4.11.2.1 Diagrama de Karnaugh. ........................................................................................... 38 CIRCUITOS COMBINATORIOS ................................................................................................... 41 5.1 Introduccin ............................................................................................................................ 41 5.2 Transistores ............................................................................................................................ 41 5.3 Lgicas.................................................................................................................................... 44 5.3.1 Lgica RTL ...................................................................................................................... 44 5.3.2 Lgica TTL....................................................................................................................... 45 5.3.3 Lgicas TTL S/LS/ALS .................................................................................................... 45 5.3.4 Tecnologa CMOS ........................................................................................................... 46

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

5.4 Compuertas ............................................................................................................................ 47 5.5 Circuitos Lgicos Combinatorios ............................................................................................ 48 5.6 Sntesis de Circuitos Combinatorios....................................................................................... 48 5.6.1 Circuito Mayora............................................................................................................... 49 5.6.2 Circuito Semi-sumador de 2 bits ..................................................................................... 49 5.7 Bloques Constructivos ............................................................................................................ 52 5.7.1 Circuito Decodificador ..................................................................................................... 52 5.7.2 Circuito Multiplexor .......................................................................................................... 54 5.7.3 Circuito Demultiplexor ..................................................................................................... 55 5.7.4 Circuito Sumador Completo de 1 bit................................................................................ 57 5.8 Tiempo (Retardo) de Propagacin ......................................................................................... 59 6 MEMORIAS ROM.......................................................................................................................... 61 6.1 Introduccin ............................................................................................................................ 61 6.2 Caractersticas........................................................................................................................ 61 6.3 Circuito Interno........................................................................................................................ 62 6.4 Variantes Tecnolgicas .......................................................................................................... 62 6.4.1 PROM .............................................................................................................................. 62 6.4.2 EPROM ........................................................................................................................... 63 6.4.3 EEPROM ......................................................................................................................... 64 6.4.4 Flash EEPROM / Flash EPROM / Flash Memory ........................................................... 64 6.5 Capacidad y Organizacin...................................................................................................... 65 6.6 Arreglos de Memorias............................................................................................................. 65 6.6.1 Memoria de mayor tamao de Palabra ........................................................................... 65 6.6.2 Memoria de mayor cantidad de Palabras........................................................................ 65 6.7 Chip Select.............................................................................................................................. 67 6.7.1 Aplicacin del Chip Select (CS) a Arreglos de Memorias ............................................... 68 6.8 Lgica de Tercer Estado (Tri-state) ........................................................................................ 68 6.8.1 Aplicacin de Lgica Tri-state con Output Enable (OE) a Arreglos de Memorias........... 69

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

1
1.1

SISTEMAS DE NUMERACIN
Introduccin

En este captulo expondremos brevemente (a modo de repaso) conceptos bsicos sobre los sistemas de numeracin. No por sencillo el tema deja de ser importante pues nos permite comenzar a acostumbrarnos a los sistemas de numeracin utilizados en computacin, especialmente el binario y el hexadecimal, tarea no trivial si tenemos en cuenta el "lastre" que significan aos y aos de prctica con el sistema decimal exclusivamente. Podemos entender un sistema de numeracin como un conjunto de smbolos y un conjunto de reglas de combinacin de dichos smbolos que permiten representar los nmeros enteros y/o fraccionarios. Dentro de los sistemas de numeracin posibles un conjunto importante, y destacado, es el constituido por los sistemas de numeracin posicionales.

1.2

Sistemas posicionales

En estos sistemas la representacin de un nmero se realiza mediante un conjunto de smbolos y su posicin relativa dentro de la expresin. Como ejemplo de un sistema posicional podemos citar al Romano, en el cual es claro que la posicin relativa de los smbolos influye en la representacin. Ej.: VI corresponde al 6 y IV al 4. Dentro de los sistemas posicionales estn incluidos los que sern objeto de nuestro estudio: los sistemas con base.

1.3

Sistemas con base

En los sistemas con base un nmero cualquiera la forma:

N, se representa mediante un polinomio de

N = a n bn + ... + a 0 b 0 + a -1 b -1 + ...
donde ai es un smbolo del sistema, al que llamamos dgito, y b es la base. La base es igual a la cantidad de smbolos del sistema. Notando que los dgitos son la representacin en el sistema de los nmeros enteros menores que la base, tenemos que se cumple la condicin b > ai 0. La base b la representamos siempre, por convencin, en el sistema decimal (si la representramos en el sistema del cual es base su representacin sera, naturalmente, 10). Habitualmente la representacin omite las potencias de la base y coloca un punto (o coma) para separar la parte de potencias positivas de la parte con potencial negativas, quedando:

n 1

...a

.a

Sistema decimal: El sistema de numeracin utilizado en la vida cotidiana es el decimal, cuya base es diez, utilizando los conocidos diez smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9 . Sistema binario: Es el sistema de base 2 en el cual los dos smbolos utilizados son el 0 y el 1, los que reciben el nombre de bit (binary digit).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Sistema Octal: Es el sistema de base 8 en el cual se usan los smbolos 0, 1, 2, 3, 4, 5, 6, 7. Sistema Hexadecimal: Es el sistema de base 16 en el cual se usan los smbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F . La base del sistema en el que est representado un nmero se suele indicar con un subndice al final del nmero y en los casos particulares de base 2 (binario), base 8 (octal), base 16 (hexadecimal) con un subfijo con las letras b, o ( q) y h respectivamente. En el caso de base 16 tambien se utiliza el prefijo 0x. Si no se indica nada se asume base 10. Ejemplos:

1101 2 = 1101b = 1 2 3 + 1 2 2 + 0 21 + 1 2 0 = 13 (decimal)


1011.11 2 = 1101.11b = 1 2 3 + 0 2 2 + 1 21 + 1 2 0 + 1 2 1 + 1 2 2 = 11.75 (decimal) A2 F
16

= A2 Fh = 10 16 2 + 10 21 + 15 16 0 = 0xA2F = 303 (decimal)

Estudiaremos a continuacin los algoritmos para que, dada la representacin de un nmero en una cierta base, podamos hallar la correspondiente representacin en otra base dada.

1.4

Conversin de base de enteros


Nuestro deseo es dado un nmero N entero en una base B representado por
n 0 N = An B + ... + A0 B

se desea hallar su expresin en una base b En definitiva lo que buscamos es hallar los valores de am , am-1 , . . . , a0 Caso A: Conversin de una base B a una base b usando la aritmtica de la base b (muy til para pasar de cualquier base a la base 10). La conversin se hace a travs del polinomio caracterstico, expresando los smbolos An . . . A0 y la base B en la base b y evaluando el polinomio, realizando las operaciones en la base b. Ejemplo: Convertir A2Fh a decimal.

A 2 Fh = 10 16 2 + 2 16 1 + 15 16 0 = 2607
Caso B: Conversin de una base B a una base b usando la aritmtica de la base B (muy til para pasar de base 10 a cualquier base)

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Previamente notemos que:

N = b N1 + a0 N 1 = b N 2 + a1 . . . Nn-1 = b N n + a n
Por lo que los valores a0 . . . an son los restos de las divisiones de N entre b realizadas en la aritmtica de la base B.

N |b a0 N 1 | b a1 N2 Nn | b an 0
Ejemplo: Convertir 653 a binario.

653 | 2 1 326 | 2 0 163 | 2 1 81 | 2 1 40 | 2 0 20 | 2 0 10 | 2 0 5| 2 1 2| 2 0 1| 2 1 0

653 = 1010001101b

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Ejemplo: Convertir 653 a base 5.

653 | 5 3 130 | 5 0 26 | 5 1 5|5 0 1 1


653 = 101035
Los ejemplos vistos son siempre de decimal a otra base; si quisiramos pasar desde una base b1 (b1 <> 10) a la base b2 existe la posibilidad de hacer las operaciones con la base b1 o, por simplicidad, cambiar primero a base 10 y luego de esta a la base b2.

1.5

Conversin de nmeros con parte fraccionaria


n -1

Sea un nmero N = Ne + Nf = an b +...+ a1 b + a0 + a-1 b + ... donde Ne y Nf son la parte entera y la parte fraccionaria respectivamente. La parte fraccionaria sigue siempre a la parte entera en cualquier base. Por lo tanto Ne puede convertirse igual que antes y Nf se convierte por separado Estudiaremos entonces como convertir partes fraccionarias. Sean

Nf = A-1 B-1 + A-2 B-2 + ... en base B Nf = a-1 b-1 + a-2 b-2 + ... en base b Caso A:
Conversin de base B a una base b usando la aritmtica de la base b (muy til para pasar de cualquier base a base 10 ) Sea Nf = A-1 B + A-2 B + ...+ A-m B
-1 -2 -m

lo que hago es desarrollar el polinomio equivalente. Sea P(x) = A-1 x1 + A-2 x2 + ...+ A-m xm Si se calcula el valor numrico de P(x) para x = B usando aritmtica b obtendremos el valor buscado. Ejemplo : pasar 0.2138 a base decimal
-1

N=2 8-1 + 1 8 + 3 8 P(x) = 3 x3 + x2 + 2 x


-2 -3

El valor numrico para

x=

1 ser: 8

P(x) = 3 (0.125)3 + (0.125)2 + 2 (0.125) = 0.27148...

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Caso B:
Conversin de una base B a una base b operando con la aritmtica de la B (lo que la hace muy til para pasar de base 10 a cualquier base) Para determinar los coeficientes a-1, a-2, etc. para la base b se observa que cada uno de tales coeficientes es, en si mismo un entero. Primero se multiplica por b (con aritmtica B):

b Nf = a-1 + a-2 b-1 + ...+ a-3 b-2


En donde, la parte entera de b Nf es a-1. A continuacin se resta a-1 y se multiplica de nuevo por b:

b (b Nf - a-1) = a-2 + a-3 b-1 + ... determinando as a-2. Se sigue este proceso hasta que se obtengan tantos coeficientes como se deseen. En el siguiente procedimiento puede ocurrir que el proceso no termine.
Ejemplo: Convertir 653.61 a base 2

2 (0.61) = 1.22 a-1 = 1 2 (0.22) = 0.44 a-2 = 0 2 (0.44) = 0.88 a-3 = 0 2 (0.88) = 1.76 a-4 = 1 2 (0.76) = 1.52 a-5 = 1 653 = 1010001101b 653.61 = 1010001101.10011...b 1.6 Caso Particular bases 8 y 16

La base 8 (octal) y la base 16 (hexadecimal) tienen una ntima relacin con la base 2. Puesto que 8 = 23 cada dgito octal corresponde a 3 dgitos binarios. El procedimiento entonces para convertir un nmero binario en nmero octal es dividir en grupos de 3 bits a partir del punto binario y asignando el dgito octal correspondiente a cada grupo. Ejemplo: convertir 11001010011.1111100112 a base 8

11001010011.111110 011 = 3123.7630 8 {{{{ { { {


3 1 2 3 7 6 3

La conversin de base 8 a base 2 se hace a la inversa, convirtiendo en binario cada dgito octal, as:

7328 es 78 = 111b 38 = 011b => 7328 = 111011010b 28 = 010b


El equivalente hexadecimal de un nmero binario se obtiene simplemente, dividiendo al primero en grupos de 4 bits.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

Ejemplo :

110110111000 0110.1010 0011 = 0DB86.A3h {{{{{{


D B 8 6 A 3

Anlogamente se realiza para pasar de hexadecimal a binario. La tabla 1 presenta la combinacin binaria equivalente a cada uno de los smbolos del sistema hexadecimal.

0000 0001 0010 0011 0100 0101 0110 0111

0 1 2 3 4 5 6 7

1000 1001 1010 1011 1100 1101 1110 1111

8 9 A B C D E F

Tabla 1 - Conversin binario hexadecimal.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

10

Arquitectura del Computador 1

Notas de Terico

2
2.1

CODIGOS Y ERRORES
Introduccin

En el prximo captulo estudiaremos la forma en que se representan los distintos tipos de objetos con que trabajamos en computacin. En los lenguajes de alto nivel manejamos distintos tipos de datos: caracteres, strings, nmeros enteros, nmeros reales. Para trabajar con ellos, en general slo nos interesa saber que son, como se opera con cada uno y esto se estudia en los cursos de programacin. En esta materia nos ocuparemos de otro aspecto: como estn implementados, a nivel interno, los distintos tipos de datos. La unidad elemental de informacin que se usa en computacin es un objeto que toma solo 2 valores posibles (0, 1): el BIT (dgito binario) Los distintos tipos de datos se construyen en base a estructuras de bits, los cuales sern en general arrays de n elementos que reciben el nombre de palabra de largo n. En el caso particular de n = 8 el array se denomina byte. Estudiaremos entonces, la representacin interna de los datos como la expresin de los distintos tipos en funcin de estructuras de bits. Por lo anterior resulta que los distintos tipos de datos se representan a travs de cdigos binarios. Es decir existe un proceso de codificacin de los objetos de informacin en funcin de otros (las estructuras de bits) con los que se trabajar en realidad. Por esta razn es interesante estudiar, aunque sea brevemente, un problema fundamental en la manipulacin de cdigos binarios: la deteccin y correccin de errores. No nos referiremos aqu a errores en la codificacin de los objetos sino a los que aparecen cuando se manipula con ellos. Usualmente los objetos de informacin se almacenan y/o se transmiten. Estas dos operaciones comunes se realizan, en definitiva, utilizando medios fsicos (memorias, discos, canales de comunicacin, etc.) los cuales no estn libres de errores. Por tanto es de particular inters el estudio de la posibilidad de detectar o corregir errores en cdigos binarios. De esta manera nos aseguraramos que un dato recuperado de una unidad de almacenamiento es correcto (coincide con el almacenado) o que un dato recibido por un canal de comunicaciones lo es (coincide con el enviado por el emisor).

2.2

Deteccin y correccin de errores

Todos los sistemas de codificacin que permiten deteccin y correccin de errores se basan en una misma idea: redundancia. El fundamento es sencillo: para poder distinguir si un valor es correcto o no (o sea representa un objeto vlido del sistema o no) debo agregar informacin adicional al cdigo. Entonces en todo sistema de codificacin con capacidad de detectar errores el nmero de objetos representados es siempre menor que el nmero de valores posibles del cdigo binario utilizado. Esta afirmacin quedar ms clara cuando veamos las distintas estrategias utilizadas. De todas formas un ejemplo puede ser de utilidad: supongamos que tenemos 16 objetos a representar; en principio, con un cdigo binario de 4 bits alcanzara (24 = 16), pero con 4 bits no estaramos en condiciones de detectar errores puesto que todos los valores posibles del cdigo binario utilizado corresponderan a objetos vlidos. De esta manera si por ejemplo hubiera un error en un bit del cdigo que representa a un objeto A se transformara en el cdigo que representa a un objeto B por lo que no habra posibilidad de detectarlo.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

11

Arquitectura del Computador 1

Notas de Terico

Para disponer, en este caso de la posibilidad de distinguir un cdigo binario correcto de uno incorrecto, deberamos utilizar un cdigo binario de, por ejemplo, 6 bits. Con 6 bits tendramos 64 valores posibles de los cuales slo 16 representaran objetos reales. Si elegimos convenientemente los cdigos asociados a cada objeto estamos en condiciones de detectar errores producidos por el cambio de un bit en el cdigo que representa un objeto.

2.3

Paridad

Uno de los mecanismos para generar sistemas de codificacin con capacidad de detectar errores es el de la paridad, o codificacin con bit de paridad. La idea es agregar a cada cdigo binario de n bits que representan objetos vlidos, un nuevo bit calculado en funcin de los restantes. La forma en que se calcula el bit de redundancia (de paridad) es tal que la cantidad de unos en el cdigo completo (original + bit de paridad) ser par (en cuyo caso hablamos de paridad par) o impar (en cuyo caso se trata de paridad impar). Cuando se genera el cdigo (se almacena o se transmite) se calcula este bit mediante uno de los dos criterios expuestos a partir de los n bits originales. Cuando se recupera el cdigo (se lee o se recibe) se recalcula el bit y se chequea con el almacenado o transmitido. En caso de no coincidir estamos ante un error, si el chequeo cierra podemos decir que para nuestro sistema no hubo errores. Notemos que no podemos afirmar en forma absoluta la ausencia de error aunque el bit de paridad recalculado coincida con el recuperado. Esto es una regla general para todo sistema de codificacin y en este caso se ve claramente: si cambian a la vez 2 bits del cdigo o, en general, un nmero par de ellos, el sistema de deteccin de errores por paridad no funciona, en el sentido que no reporta el error. Los sistemas de codificacin con capacidad de deteccin (o deteccin y correccin) de errores funciona correctamente dentro de ciertos lmites, si se cumplen ciertas hiptesis de trabajo. Un conjunto de supuestos que de cumplirse aseguran el buen funcionamiento de los sistemas que estamos analizando es: (a) La probabilidad de que falle un bit es baja. (b) Las fallas de bits son sucesos independientes (la posibilidad que un bit falle no tiene relacin alguna con la falla de otro bit del cdigo). En esta hiptesis la probabilidad de que fallen 2 bits a la vez es igual al cuadrado de la probabilidad que falle uno (por la segunda hiptesis) que ya era un valor pequeo (por la primera) por lo que da un valor muy bajo. Por lo tanto en estas hiptesis el sistema de deteccin por paridad funciona bien: cuando no detecta error es altamente probable que el cdigo sea efectivamente el correcto. Es importante sealar que las hiptesis efectuadas se ajustan al caso de las memorias de las computadoras modernas. No ocurre lo mismo con los dispositivos de almacenamiento que graban la informacin en forma serial (un bit a continuacin del otro) ni con los sistemas de transmisin de datos seriales ya que en estos casos el hecho que falle un bit est vinculado, en forma no despreciable, a la falla de otro ( en particular del vecino "anterior"), por lo cual la hiptesis b) no se cumple para estos sistemas, de donde el control por paridad no sera demasiado efectivo en estos casos. Volviendo al mecanismo de bit de paridad y recordando la definicin de la operacin lgica XOR y su propiedad asociativa es fcil ver que el bit de paridad se puede expresar como:

P = b0 b1 . . . bn

(paridad par) (paridad impar)

P = ( b0 b1 . . . bn )

Instituto de Computacin - Facultad de Ingeniera - UDELAR

12

Arquitectura del Computador 1

Notas de Terico

El chequeo de la correccin de un cdigo recuperado se puede realizar evaluando la expresin (para paridad par):

P b0 b1 . . . bn
con los valores de P, b0 entonces se detect un error.
...

bn recuperados. Si el resultado es 0 "no hubo error", si es 1

Una variante de este sistema es el mecanismo de paridad horizontal/vertical. Este mtodo se puede aplicar cuando se almacenan o transmiten varias palabras de cdigo. Cada palabra de n bits de cdigo tiene su bit de paridad (que se denomina paridad horizontal) y cada n palabras almacenadas/transmitidas se agrega una palabra de paridad generada como el XOR (bit a bit, incluyendo el de paridad horizontal) que recibe el nombre de paridad vertical. Por ejemplo para n=8 sera algo as:

a0 a1 b0 b1 v0 v1

a2 a3 b2 b3 v2 v3

a4 b4 v4

a5 b5 v5

a6 b6 v6

a7 b7 v7

ah bh vh

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

ah = a0 a1 . . . a7 (idem para b, c, d, e, f, g, h) vi = ai bi . . . hi ( i= 0, 1, 2, 3, 4, 5, 6, 7, h) 2.4 Distancia

La distancia entre dos representaciones binarias se define como el nmero de bits distintos entre los dos cdigos. Es decir si tenemos dos cdigos binarios a y b
(a0

, a1, . . ., an)

(b0, b1, . . ., bn)


la distancia entre ellos esta dada por la cantidad de unos en el cdigo formado por:

(a0 b0 , a1 b1 , . . . an bn)
Por ejemplo, los cdigos:

01101 10110
tienen una distancia 4 (cuatro) La "distancia" tal cual la hemos definido tiene las siguientes propiedades (que no vamos a demostrar): 1) d(a,b) = d(b,a) 3) d(a,b) + d(b,c) d(a,c)

2) d(a,b) = 0 si y slo si a = b

Instituto de Computacin - Facultad de Ingeniera - UDELAR

13

Arquitectura del Computador 1

Notas de Terico

Se pueden generar sistemas de codificacin en binario que tengan una determinada distancia. En el caso de un sistema de cdigos se llama "distancia" del cdigo a la mnima distancia que exista entre dos valores vlidos del cdigo. Por ejemplo el cdigo "2 de 5" tiene la forma:

11000 10100 10010 10001 01100 01010 01001 00110 00101 00011
Como vemos este cdigo tiene distancia 2 ya que todos los elementos del cdigo difieren por lo menos en 2 bits (ej: 11000 y 10100). De los 32 posibles objetos que permiten representar 5 bits, este cdigo permite representar tan solo 10 objetos. La posibilidad de detectar y corregir errores est fuertemente vinculada, como es de suponer, a la distancia del cdigo (sistema de codificacin) utilizado. Consideremos un cdigo de distancia "d" y dos objetos vlidos del cdigo M y N. Consideremos el conjunto de valores posibles del cdigo (no necesariamente vlidos) que se obtienen de modificar hasta "t" bits del valor "M". Idem para los del valor "N". Estos conjuntos se pueden visualizar como "esferas" en el espacio de "n" dimensiones (siendo n la cantidad de bits del cdigo) rodeando a cada uno de los valores. d M N

t t

Como se puede ver si estos conjuntos no tienen puntos en comn, podemos afirmar que, no solo podemos detectar un error, sino que adems podemos afirmar, siempre que la cantidad de bits que suponemos se puede alterar es a lo sumo t, a qu cdigo correcto corresponde un valor "degenerado" dado, permitiendo por tanto la "correccin" del error. Si los conjuntos tienen puntos en comn no podremos corregir, pero si detectar errores, siempre y cuando dentro del conjunto de puntos asociado al valor M no incluya al valor N, puesto que si no, la alteracin de un cdigo vlido puede conducir a otro vlido, impidiendo as detectar el error. Es decir que la condicin para que se puedan detectar errores es que:

t<d
la condicin para que se puedan corregir es:

t<

d 2

Por ejemplo para poder corregir errores de hasta un bit, hay que utilizar un cdigo de distancia 3 por lo menos.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

14

Arquitectura del Computador 1

Notas de Terico

2.5

Bits de Redundancia

Se puede demostrar que para generar cdigos de distancia 3 para objetos representables en "k" bits, se necesitan utilizar "p" bits adicionales, llamados bits de redundancia, tal que se cumpla:

2p p + k + 1
Por ejemplo, supongamos que queremos disear un sistema de memoria de una computadora de 16 bits, de manera que sea capaz de corregir errores de hasta 1 bit. De acuerdo a la expresin necesitamos agregar 5 bits de redundancia para que esto sea posible.

25 = 32 5 + 16 + 1 = 22 2.6 Cdigos de Hamming

Los cdigos de Hamming son una forma prctica de generar cdigos de distancia 3. Los veremos a travs de un ejemplo en concreto. Supongamos que tenemos 16 objetos representados, en principio, en binario:

a4 a3 a2 a1
de acuerdo a lo visto antes precisamos 3 bits de redundancia (ya que 23 = 8 3 + 4 + 1 = 8)

p3 p2 p1
Si armamos el cdigo (que tendr entonces 7 bits) de la siguiente manera:

a4 a3 a2 p3 a1 p2 p1
y convenimos que las representaciones vlidas de los 16 objetos a representar son aquellas en los cuales los bits de redundancia se calculan de la siguiente manera:

p1 = a4 a2 a1 p2 = a4 a3 a1 p3 = a4 a3 a2
podemos al recuperar el cdigo calcular los bits "s" que estn vinculados, al igual que los "p" a la posicin de los distintos bits en el cdigo:

S0 S1 S2

a4 a3 a2 p3 a1 x x x X x x X x x x

p2 p1 x x

s0 = p1 a4 a2 a1 s1 = p2 a4 a3 a1 s2 = p3 a4 a3 a2
estos bits "s" representan, en binario, un nmero "S"

S = S2 S1 S0

Instituto de Computacin - Facultad de Ingeniera - UDELAR

15

Arquitectura del Computador 1

Notas de Terico

Si al calcular "S" se da que es cero no hay errores (por lo menos para nuestro sistema de codificacin). Si "S" da distinto de 0, el nmero que de me indica el bit que esta errado (siendo el 1 el de ms a la derecha, o sea p1). De esta manera es posible reconstruir el valor correcto del cdigo, cambiando el bit que identificamos como corrupto (si esta en 0 lo pasamos a 1 y viceversa).

2.7

Cdigos de Redundancia Cclica

Como fue mencionado los sistemas de deteccin por paridad son aptos para trabajar en la hiptesis que la falla de un bit es un suceso probabilsticamente independiente de la falla de un bit "vecino". Los cdigos de Hamming tambin se apoyan en esta hiptesis para asegurar eficacia en la deteccin y correccin del error de un bit. Esta hiptesis se cumple muy bien en dispositivos como ser las memorias de las computadoras (RAM). Sin embargo en los sistemas de almacenamiento masivo en base a discos magnticos u pticos, o en sistemas de transmisin serie, la hiptesis no es cierta y por tanto estos mecanismos de manejo de errores no son del todo efectivos. Para estos casos se utilizan otros mtodos, diseados para ser capaces de manejar "errores en rfaga". Uno muy difundido es el Cdigo de Redundancia Cclica (CRC), que se basa en la aritmtica de mdulo aplicada a los polinomios. Consideremos un "mensaje" a transmitir (o almacenar) de m bits. Llamamos M(x) al polinomio de grado m-1 cuyos coeficientes coinciden con los bits del mensaje. Se define un polinomio G(x) de grado r de coeficientes binarios (0 1), que es caracterstico del sistema. Consideremos el r polinomio x M(x), en otras palabras elevamos el grado del polinomio M(X) en r. Dividamos dicho polinomio entre G(x): x M(x) = Q(x)G(x) + R(x)
r

Q(x) = cociente, R(x) = resto

Consideremos ahora el polinomio T(x) definido por la expresin: T(x) = x M(x) - R(x) Es sencillo comprobar que T(x) es divisible por G(x). T(x) es el polinomio que se transmite (o almacena). En realidad los que se transmiten (o almacenan) son los bits coeficientes de T(x). Notemos que los primeros m bits de T(x) son los mismos que M(x), ya que R(x) es a lo sumo de grado r-1 y por tanto no afecta ninguno de los coeficientes de xrM(x). El receptor del mensaje modificado T(x) (o el sistema que lo recupera del almacenamiento) puede verificar la correctitud del mensaje comprobando que T(x) es dividible por G(x). Lo mas interesante de este mtodo es que, a pesar de las apariencias, es sumamente sencillo de implementar, incluso en hardware, por tratarse de coeficientes binarios. La eleccin del polinomio G(x) (denominado "generador") no es un tema menor, ya que de acuerdo a sus coeficientes tendr mejores propiedades de deteccin. Los sistemas CRC que tienen polinomios G(x) con grado r y contienen termino independiente pueden detectar errores de rfagas de hasta r bits. Tener en cuenta que estos sistemas son muy buenos para rfagas, pero no tanto para errores aislados si estos aparecen mas de una vez en el mensaje. Un ejemplo de polinomio que se usa es: CRC-16 -> x
16
r

+x

15

+x +1

Instituto de Computacin - Facultad de Ingeniera - UDELAR

16

Arquitectura del Computador 1

Notas de Terico

3
3.1

REPRESENTACION INTERNA DE DATOS


Introduccin

Como ya adelantamos en este captulo analizaremos como se construyen las representaciones de los distintos tipos de datos en funcin de los codigos binarios, formados por estructuras de bits.

3.2

Tipo Carcter

Comenzaremos viendo cmo se representan los caracteres mediante cdigos binarios. Entendemos por caracteres los smbolos que se utilizan en el lenguaje natural escrito: letras, nmeros, smbolos de puntuacin, smbolos especiales, etc. La forma en que se codifican los caracteres ha ido evolucionando con el tiempo y han existido, y existen actualmente, mltiples formas distintas de hacerlo. Los sistemas de codificacin de caracteres muchas veces dependen de los idiomas y por tanto difieren segn las geografas donde se apliquen y su popularidad depende en parte de la importancia geopoltica y econmica de dichas regiones. Durante los 80 y los 90 la forma ms difundida de representar estos smbolos es la establecida por el denominado cdigo ISO-8859-1 para los idiomas de Europa Occidental. Este cdigo fue diseado por la International Standard Organization en forma original como ISO/IEC 88591 (que tena menos caracteres definidos), adoptado en forma oficial por la IANA (Internet Assigned Numbers Authority = organismo que regula actualmente la actividad en internet) y fue utilizado por los sistemas operativos UNIX (o derivados). Una variante del ISO/IEC 8859-1 es el Windows-1252, utilizado por el sistema operativo Windows. Actualmente la tendencia es hacia la utilizacin del UCS (Universal Character Set), que es la parte de especificacin de caracteres del proyecto Unicode, el cul se diseo para ser un estndar universal de cmo representar texto en mltiples idiomas y de mltiples tipos (ej: frmulas matemticas) en las computadoras. El Unicode fue adoptado por la ISO bajo la denominacin ISO 10646. Existen distintos sistemas de codificacin del Unicode. Los ms difundidos son el UTF-8, el UTF-16 y el UTF-32. El UTF-8 es un sistema de codificacin de largo variable, compatible con el ASCII (American Standard Code for Information Interchange), origen tambin del ISO-8589 y muchos otros sistemas de codificacin de caracteres. El ASCII es un cdigo de 7 bits que especifica la representacin de las letras y smbolos especiales usados en el idioma Ingls (ms exactamente Ingls norteamericano) adems de los nmeros, y es muy similar al alfabeto nmero 5 del CCITT (Comit Consultivo Internacional sobre Telefona y Telecomunicaciones), actualmente ITU (International Telecomunication Union), organismo que, entre otras funciones, establece propuestas de estandarizacin en materia de comunicaciones. De los 128 valores posibles del cdigo (7 bits) 10 se utilizan para los dgitos decimales (del 30h al 39h), 26 para las letras maysculas (del 41h al 5Ah), 26 para letras minsculas (del 61h al 7Ah), 34 para smbolos especiales (espacio, !, #,$,%,/,&,+,-,*, etc.) y los 32 primeros se denominan genricamente "caracteres de control" y se utilizan bsicamente en la comunicacin de datos y con fines de dar formato a los textos en impresoras y pantallas de video. Algunos de estos caracteres de control son: 00h NUL (Null) Es la ausencia de informacin, se utiliza como carcter de relleno. 02h STX (Start of Text) Muchos protocolos de comunicacin lo utilizan para indicar el comienzo de un texto. 03h ETX (End of Text) Idem para fin de texto. 06h ACK (Acknowledge) Se utiliza en comunicaciones para contestar afirmativamente la recepcin correcta de un mensaje. 15h NAK (Negative acknowledge) Idem para recepcin incorrecta. 0Ah LF (Line Feed) Indica pasar a la siguiente lnea (en una impresora o pantalla).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

17

Arquitectura del Computador 1

Notas de Terico

0Ch FF (Form Feed) Indica pasar a pgina siguiente. 0Dh CR (Carriage Return) Indica volver a la primera posicin dentro de la lnea. 11h DC1 (Data Control 1) Indica dispositivo libre (disponible). 12h DC2 (Data Control 2) Indica dispositivo ocupado (no disponible). Supongamos que enviamos caracteres a una impresora y sta no est en condiciones de recibir ms (ha llenado su "buffer") entonces la impresora enva el carcter DC2 al computador (para indicarle que no enve ms caracteres), cuando queda en condiciones de recibir nuevos caracteres, enva el carcter DC1. Cuando se utilizan caracteres con este fin, se dice que se hace uso de un protocolo XON/XOFF (Transmit on/Transmit off). 1Bh ESC (Escape) Indica el comienzo de una "secuencia de escape". Los caracteres que vienen a continuacin tienen un significado especial. Estas secuencias se usan tpicamente para enviar comandos a las impresoras y/o terminales de visualizacin. Por ejemplo, para posicionar el cursor en la pantalla, cambiar el tipo de letra en una impresora. La forma ms habitual de representar el cdigo ASCII, y en general todos los sistemas de codificacin de caracteres, es a travs de una matriz cuyas columnas estn asociadas a los 3 bits ms significativos del cdigo, y sus filas a los 4 bits menos significativos tal como se muestra en la siguiente tabla: 0 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 DLE DC1 DC2 DC DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 2 SP ! " # $ % & ' ( ) * + , . / 3 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 4 @ A B C D E F G H I J K L M N O 5 P Q R S T U V W X Y Z [ \ ] ^ _ 6 ` a b c d e f g h i j k l m n o 7 p Q R S T U V W X Y Z { | } ~ DEL

0 1 2 3 4 5 6 7 8 9 A B C D E F

Tabla 2 - Cdigo ASCII Como ya hemos establecido, el ASCII codifica los caracteres utilizados para escribir textos en idioma Ingls y los signos de puntuacin y smbolos especiales propios de dicha lengua. Qu pasa entonces con otras lenguas como el espaol, en particular?. Cmo se puede observar, la , por ejemplo, no est codificada, tampoco las letras acentuadas, as como signos de puntuacin caractersticos de nuestro idioma como "?" y "!". La situacin en este campo fue confusa hasta la ltima dcada del pasado siglo y existieron distintas propuestas de codificacin aceptadas. Se propusieron dos mecanismos bsicos para atacar el problema: uno fue modificar el ASCII de 7 bits adaptndolo a cada lengua; el otro fue utilizar un cdigo de 8 bits, que en sus primeros 128 valores coincidiera con el ASCII y los restantes utilizarlos para representar los caracteres propios de un conjunto relativamente grande de idiomas. Un ejemplo del mecanismo de modificacin del ASCII es el que fue utilizado por EPSON en sus impresoras y que se convirti en un "estndar de facto" en el mundo de las computadoras personales al ser aceptado y soportado por la casi totalidad de los otros fabricantes de impresoras. El mecanismo consiste en sustituir caracteres (en general smbolos especiales) por los caracteres que le "faltan" al ASCII para adaptarse a cada lengua en particular. As tenemos un "ASCII espaol", un "ASCII francs", un "ASCII ingls (de Inglaterra)", etc.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

18

Arquitectura del Computador 1

Notas de Terico

Un ejemplo de cdigo de 8 bits es el que utiliz por IBM en sus primeras computadoras personales, el cual puede considerarse tambin un "estndar de facto". Utiliza los 128 valores ms altos para letras y smbolos de otros idiomas y para caracteres grficos (que permiten dibujar recuadros y cosas similares). Posee tambien algunas versiones adaptadas a distintas regiones del mundo. La utilizada para la mayora de los idiomas de Occidente es la IBM437 (o CP437, por Code Page 437). En la tabla 3 se muestran los caracteres "agregados" al ASCII (incompleta) para esta variante. El cdigo ISO-8859-1 est representado en la tabla 4, incluyendo los caracteres agregados por la codificacin Windows-1252 (tambin conocida como Windows Latin-1). Finalmente mencionaremos los cdigos de 16 bits que dan soporte a los idiomas de Oriente (Chino, Japons, Coreano). De estos cdigos el ms aceptado es el ISO 10646 el cual coincide con la parte de representacin de caracteres del Proyecto Unicode. El Unicode pretende codificar texto (no solamente caracteres) y toda clase de smbolos dando soporte a reas tales como las matemticas, la lingstica y los lenguajes de programacin, entre otras.

Tabla 3 - Cdigo IBM437 de 8 bits (con codigo Unicode asociado).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

19

Arquitectura del Computador 1

Notas de Terico

Tabla 4 - ISO-8859-1 (en las filas 80 y 90 estn los caracteres agregados por Windows-1252).

3.3

Tipo String

El tipo STRING es una sucesin de caracteres. Existen varias formas de representacin interna. Lo principal a saber es dnde termina la sucesin. Una primera manera es emplear largo fijo. Esta representacin es demasiado rgida. Una segunda manera es reservar un cdigo especial para fin de string. Este cdigo especial no podr formar parte del string. Por ejemplo, el lenguaje "C" utiliza el NULL para fin de string. Una tercera manera consiste en convertir los strings en un registro donde el primer campo tiene el largo y el segundo tiene el contenido. El nico inconveniente es que la estructura es ms compleja. En BASIC se pueden encontrar ejemplos de esta representacin.

3.4

Tipo Entero sin signo

Los enteros sin signo (siempre positivos) poseen la representacin ms simple: su cdigo binario coincide con su expresin en base 2 restringida a un nmero fijo de bits. Se utilizan para contadores, direcciones, punteros y para derivar otros tipos. Las operaciones elementales de este tipo son las cuatro usuales para los nmeros enteros (+ - * / ).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

20

Arquitectura del Computador 1

Notas de Terico

Por ejemplo en la suma de 2 enteros sin signo, se aplica el algoritmo usual para los nmeros binarios. Veamos un par de casos considerando representaciones de 8 bits Ejemplo 1:

25 + 74 99

000110000 carry final = 0 00011001 01001000 01100001

Ejemplo 2:

25 +234 259

111110000 carry final = 1 00011001 11101010 00000011 la representacin no es correcta

Los bits de carry (acarreo) de las operaciones anteriores (000110000 y 111110000) se presentan en la primera lnea de la operacin. Notar que si el ultimo bit de acarreo (es el denominado bit de acarreo o carry de la operacin) es 1, el codigo binario resultante no representa al resultado de la operacin. En ese caso (carry = 1) ha sucedido un overflow, que significa que nos hemos salido del rango de la representacin. El problema principal en esta representacin, que es comn a todas las basadas en un tamao fijo de palabra, es que estamos restringidos en el tamao y las operaciones pueden, por tanto, dar overflow (en este caso indicado por el carry en 1). Los tamaos usuales para esta representacin son: el byte ( 0 a 255 ), la palabra de 2 bytes (16 bits, 0 a (216)-1 ), la palabra de 4 bytes (32 bits, 0 a (232)-1) y, actualmente, la palabra de 8 bytes (64 bits, 0 a (264)-1). En general el rango de la representacin para n bits ser:

0 N 2n 1
3.5
3.5.1

Tipo entero con signo


Valor absoluto y signo

Si tenemos n bits para representar el nmero, tomamos uno para el signo y el resto representa el valor absoluto del nmero en binario (expresin del numero en base 2). Msb lsb

bn-1

bn-2

...

b1

b0

bn-1 = Signo. bn-2 ... b1 b0 = Valor absoluto


Si bn-1 = 1 entonces el nmero es negativo. Si bn-1 = 0 entonces es positivo. Ejemplo: (en 4 bits)

0110 6 1110 -6

Instituto de Computacin - Facultad de Ingeniera - UDELAR

21

Arquitectura del Computador 1

Notas de Terico

Para n bits el rango del nmero representado es:

( 2 n1 1) N 2 n 1 1
En esta representacin tenemos dos formas de representar el cero, 1000 y 0000 (para n=4). Esto puede verse como un inconveniente. Adems las operaciones no trabajan directamente con la representacin sino que deben interpretarse en base a los signos relativos. 3.5.2 Complemento a uno

Los nmeros positivos se representan en binario, y los nmeros negativos se representan como el valor absoluto complementado bit a bit. Para n bits el rango del nmero representado es:

( 2 n1 1) N 2 n 1 1
n=8
msb Lsb

5 0000 0101 -5 1111 1010


Ejemplo: (n = 4)

-7 -6 -5 -4 -3 -2 -1 0 0 1 2 3 4 5 6 7

1000 1001 1010 1011 1100 1101 1110 0000 1111 0001 0010 0011 0100 0101 0110 0111

El orden en binario (interpretando los codigos como si fueran numeros en base 2, aunque no lo son) no corresponde al orden de los nmeros que representa. Otra desventaja, es que hay 2 representaciones distintas para el cero (0000 y 1111). 3.5.3 Desplazamiento

La representacin por desplazamiento supone un corrimiento de los valores a representar segn un valor d (llamado desplazamiento), y posteriormente se la aplica el mdulo para que se pueda almacenar en el tamao de la representacin deseada. Para el desplazamiento, se supone que el valor codificado (resultado de la operacin N + d), es un nmero que para n bits es un valor entre 0

Instituto de Computacin - Facultad de Ingeniera - UDELAR

22

Arquitectura del Computador 1

Notas de Terico

y 2n-1, por lo que permite representar valores desde d a 2n-d-1.En general para representar 2n n-1 n-1 n nmeros diferentes, se asigna a d el valor 2 , o 2 -1 aplicando un mdulo de 2 .

N ( N + d ) representado con n bits


Ejemplo: n=4, d= 8

-8 0000 -7 0001 .... -1 0111 0 1000 1 1001 .... 7 1111


La propiedad ms importante de esta representacin es que los cdigos conservan el orden de los nmeros, con o sin signo. En particular, toda representacin de un nmero negativo es menor que cualquiera de un nmero positivo. Otra ventaja, es que hay una sola representacin para el cero. El principal inconveniente de esta representacin es que los algoritmos de las operaciones usuales son ms complejos. 3.5.4 Complemento a dos

Los nmeros positivos se representan directamente en binario y para conseguir el cdigo de los negativos, se complementa el valor absoluto y se los incrementa en uno.

N N2 N not (N2 ) + 1 = N

si N 0 si N <0

Por ejemplo, para nmeros de 8 bits se tiene: Si 70 = 01000110, entonces para lograr -70 hago el complemento a uno (negacin bit a bit) de esta configuracin y luego le sumo uno, luego:

01000110 (70) 10111001 (complemento a 1) +1 10111010 (-70)


Las propiedades ms importantes de esta representacin son: Mantiene la suma (la suma con o sin signo es la misma operacin, es decir que el algoritmo es el mismo). Es decir la suma de las representaciones da la representacin de la suma de los nmeros representados, sean estos positivos o negativos. Es coherente la representacin del cero:

00000000 0 11111111 not 0 +1 00000000

Instituto de Computacin - Facultad de Ingeniera - UDELAR

23

Arquitectura del Computador 1

Notas de Terico

repr( 0 ) = repr( -0 ) Se pierde la relacin de orden. El algoritmo de comparacin de A con B depende de los signos de A y de B. La resta se hace sumando el negativo del sustraendo, con lo que tambien se mantiene. A - B = A + ( -B ) = A + not B + 1 Al igual que en toda representacin de largo fijo las operaciones pueden generar overflow. Pero a diferencia del caso de la representacin binaria (entero sin signo) en este caso el bit de carry no indica por s solo esta condicin. Veamos algunos ejemplos ilustrativos de los distintos casos posibles: Ejemplo 1:

25 74 99

000110000 carry final = 0 00011001 01001000 01100001 representacin correcta (overflow = 0)

Ejemplo 2:

25 + -22 3
Ejemplo 3:

111110000 carry final = 1 00011001 11101010 00000011 representacin correcta (overflow = 0)

25 + 114 139
Ejemplo 4:

011100000 carry final = 0 00011001 01110010 10001011 -117 representacin incorrecta (overflow = 1)

-120 + -22 -142

100010100 carry final = 1 10001000 11101010 01110010 114 representacin incorrecta (overflow = 1)

En esta repreentacin para saber si hubo overflow al final de la operacin hay que verificar la existencia de acarreo en los dos bits ms significativos. Dejamos a cargo del lector determinar la expresin lgica del overflow en funcin de dichos acarreos. Para el caso de la multiplicacin sucede algo paradjico: si bien la representacin mantiene tambin dicha operacin, la forma usual de implementar la operacin no lo hace. Veamos primero con ejemplos la primer parte de la afirmacin: Ejemplo 1:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

24

Arquitectura del Computador 1

Notas de Terico

25 3 15 6 75

00011001 00000011 00011001 00011001 01001011 representacin correcta

Ejemplo 2:

-22 3 6 6 -66

11101010 00000011 11101010 11101010 10111110 representacin correcta

El problema es que la multiplicacin binaria se implementa normalmente dando el resultado en el doble de bits que los operandos. Esto es: si los operandos son de n bits, el resultado de la multiplicacin se calcula en 2n bits. Esto es porque de otra manera rpidamente nos iramos de representacin aunque multiplicramos operandos pequeos. Al extender el resultado de la operacin a 2n bits, la propiedad de mantener la multiplicacin deja de ser cumplida por la representacin complemento a 2. De all es que se diga habitualmente que la representacin complemento a 2 mantiene la suma pero no la multiplicacin (aunque estrictamente no sea correcta la afirmacin). De hecho la propiedad del mantenimiento de ambas operaciones (suma y multiplicacin) se desprende del hecho que en el fondo la aritmtica de la representacin de complemento a 2 tiene un vnculo muy estrecho con la aritmtica del mdulo. Veamos este punto. Primero observemos que para n bits, el complemento a 1 de un numero cumple con: N+N=2 -1 Por tanto: N+N+1=2 o sea: N+N=2
n n n

-N = -1 x 2n + N
n

dicho de otra manera el complemento a 2 de un nmero es lo que le falta para llegar a 2 (por ejemplo en 8 bits, el complemento a 2 de 22 es 234, el complemento a 2 de 117 es 139 y as). La segunda parte es una forma equivalente de plantear la primera, de forma de evidenciar lo que viene a continuacin. Consideremos ahora la representacin de un nmero N cualquiera. Si N es positivo se cumple siempre que: N=0x2 +N y si fuera negativo se cumplir que: -N = -1 x 2n + N Entonces en ambos casos la representacin del nmero coincide con el resto de la divisin
n

Instituto de Computacin - Facultad de Ingeniera - UDELAR

25

Arquitectura del Computador 1

Notas de Terico

entera del numero entre 2n. Es una propiedad conocida que la aritmtica del resto (aritmtica de mdulo) mantiene las operaciones de suma y multiplicacin, siempre que se tenga la precaucin de tomar el mdulo (resto de la divisin entera) de la operacin realizada entre los mdulos. Esto equivale a quedarse con los n bits menos significativos del resultado. Como vimos esto se hace en la prctica con la suma, pero no se hace con la multiplicacin (ya que se extiende a 2n bits), por lo que la propiedad solo se aplica a la suma en el caso prctico.

3.6

Tipo decimal y decimal empaquetado

Se usan para sumar cantidades de muchos dgitos donde no se puede perder precisin. En aplicaciones comerciales se tiene un caso tpico. Pueden ser del largo que se quiera y se representan internamente en forma similar a un string. type DECIMAL is array (1..LARGO) of DIGITO; type DIGITO is (0,1,2,3,4,5,6,7,8,9); Los algoritmos son similares a los empleados en las operaciones decimales hechas a mano. Observamos que en la representacin en 8 bits para dgitos, se usan 10 de los 256 cdigos. La codificacin tpica es:

0 -> 00000000 1 -> 00000001 ......... 9 -> 00001001


En esta representacin se emplean 8 bits para cada lugar, cuando solamente necesita 4 bits. Por esta razn se definen los decimales empaquetados, en los cuales se codifica con 4 bits. Tambin se les llama enteros BCD (Binary Coded Digit). Vemos un ejemplo de codificacin:

12545 00010010010101000101 {{ {{ {
1 2 5 4 5

Veamos un ejemplo de operacin suma en el caso de dos dgitos. La suma binaria es:

7 00000111 (bcd) + 5 00000101 (bcd) 12 00001100


El resultado puede ser o no BCD. Si no es, debe ser corregido. El algoritmo de correccin consiste en restar 10 al dgito menos significativo y sumar 1 al dgito siguiente. Pero sumar 1 al dgito ms significativo es sumar 16 a todo, por tanto le sumo 6 y obtengo los dgitos correctos. Es decir, por ser los dgitos de 4 bits, sumar 1 al de la izquierda, es como sumar 16 al nro. de 8 bits formado por ambos.

7 00000111 (bcd) + 5 00000101 (bcd) 12 00001100 como no es vlido le sumo 6 + 6 0110 12 00010010 (bcd)
El algoritmo de suma para decimales empaquetados es: sumar binario, dgito a dgito del menos al ms significativo, si se encuentra un dgito no valido o hay un carry, sumar 6 y obtener el dgito correcto (en los cuatro bits menos significativos) y el carry (un 1 a sumar a los siguientes dgitos).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

26

Arquitectura del Computador 1

Notas de Terico

3.7

Representacin Punto Fijo

Para representar numeros con parte fraccional se puede utilizar tambin un nmero determinado de bits (ej: 16, 32, 64), asignando un cierto nmero fijo de bits para representar la parte entera del nmero y el resto para la parte fraccional. La parte entera siempre ocupa los bits ms significativos del cdigo. Para este tipo de representacin la parte entera se puede representar en binario (para nmeros sin signo) en complemento a 2 (para nmeros con signo). La parte fraccional siempre se representa en binario (expresin en base 2 de la parte fraccional del nmero).

3.8

Tipo Moneda

Para representar cantidades monetarias se suele utilizar una representacin del tipo "punto fijo", con un numero suficiente de dgitos luego de punto fraccional de forma de darle cierta precisin a las operaciones financieras hasta el nivel de los "centavos". Una forma alternativa de verlo es pensar que lo que se almacena es la parte entera de la cantidad multiplicada por una potencia de 10. Por ejemplo el BASIC de Microsoft define el tipo "currency" como un entero de 64 bits que resulta de multiplicar la cantidad original por 10.000. Es importante tener en cuenta que representaciones con precisin variable, como el Punto Flotante que veremos a continuacin, no son buenas representaciones para este tipo de informacin.

3.9

Representacin Punto Flotante

En las distintas arquitecturas de computadoras se han utilizado diversas representaciones para expresar nmeros reales, todas ellas basadas en la siguiente notacin :

N = (1) s .b e .M
donde: s es el signo e es el exponente M es la mantisa b es la base de representacin Las bases utilizadas han sido, normalmente, 10 y 2. Dado que esta representacin es ambigua (existen varias representaciones para un mismo numero) se utiliza una versin ms restringida que se llama normalizada. Los nmeros normalizados son aquellos en que el bit ms significativo de la mantisa es distinto de cero o, que es equivalente, que la mantisa sea mxima. 3.9.1 Estndar IEEE 754 de punto flotante

Para que los nmeros representados en punto flotante fueran posibles intercambiar entre distintas arquitecturas se establece el estndar IEEE 754 que define el formato y las operaciones con estos. El estndar define tres formatos : s (bits) 1 1 1 e (bits) 8 11 15 F (bits) 23 52 64 Total (bytes) 4 8 10

Simple Precisin Doble Precisin Precisin Extendida

Los nmeros se almacenan de la siguiente forma : s E F

Instituto de Computacin - Facultad de Ingeniera - UDELAR

27

Arquitectura del Computador 1

Notas de Terico

donde el exponente se representa usando desplazamiento. En el curso usaremos tambin la "Media Precisin" (no se usa en la prctica) que tiene: s (bits) 1 e (bits) 5 F (bits) 1 Total (bytes) 2

Madia Precisin

Los nmeros normalizados son de la forma : 1,F. donde el bit ms significativo de la mantisa es un 1. Como todos los nmeros normalizados tienen un uno en el bit ms significativo el estndar define una representacin diferente que omite este bit. Este consiste en: un 1 implcito, una coma implcita y luego la parte "fraccional" de la mantisa. Por lo tanto la representacin a utilizar es de la forma :

N = (1) s .2 e+127.(1, F ) para nmeros de simple precisin N = (1) s .2 e+1023.(1, F ) para nmeros de doble precisin
Adems de operar con nmeros normalizados el estndar opera con nmeros desnormalizados : Normalizados Desnormalizados Cero Infinito Not a Number 0 < Exp < Max 0 0 1111..................................1 1111..................................1 Cualquier combinacin

0
0 0

Los nmeros desnormalizados sirven para operar con nmeros menores que el menor numero normalizado representable. Estos nmeros asumen un 0 implcito en vez del 1 implcito de los nmeros normalizados. Por lo tanto cuando tenemos un nmero en notacin punto flotante desnormalizado estamos representando el nmero:

( 1) s .2 e+127 .(0,F ) donde e es siempre cero.


3.9.2 Operaciones en Representacin Punto Flotante

Las operaciones (suma, resta, multiplicacin) se realizan mediante algoritmos especializados para la representacin. Para la suma se debe: - alinear los exponentes (llevando el menor al mayor), adecuando concordamentemente la mantisa (teniendo en cuenta el 1 omitido) - sumar las mantisas teniendo en cuenta los signos - normalizar, acomodando la mantisa y el exponente, si corresponde Para la multiplicacin se debe: - determinar el signo en base a los signos de los operandos - sumar los exponentes - multiplicar las mantisas - normalizar, acomodando la mantisa y el exponente, si corresponde 3.9.3 Perdida de Precisin

Instituto de Computacin - Facultad de Ingeniera - UDELAR

28

Arquitectura del Computador 1

Notas de Terico

Una caracterstcia de esta representacin es que el conjunto de nmeros representados no es contnuo, pudiendo existir "huecos" importantes. Esto lleva que en una suma puede suceder que el resultado coincida con el mayor de los operandos. Es fcil de ver si se piensa qu pasa si el numero de bits a correr hacia la derecha (para alinear los exponentes) hace que el bit ms significativo sea menos significante que el bit menos significativo de la otra mantisa: al sumar y tomar los bits mas significativos slo se estarn considerando los bits de la mantisa del nmero mayor.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

29

Arquitectura del Computador 1

Notas de Terico

4
4.1

ALGEBRA DE BOOLE
Introduccin.

El lgebra de Boole es una herramienta de fundamental importancia en el mundo de la computacin. Las propiedades que se verifican en ella sirven de base al diseo y la construccin de las computadoras que trabajan con objetos cuyos valores son discretos, es decir las computadoras digitales, en particular las binarias (en las cuales los objetos bsicos tienen solo 2 valores posibles) las que son, en definitiva, la casi totalidad de las computadoras de uso corriente. Desde ya adelantemos que no se vern aqu detalles formales de la construccin algebraica, ni todas las propiedades que se verifican, as como tampoco todos los mtodos de sntesis de funciones booleanas que habitualmente se incluyen en este tema en cursos de lgica y/o diseo lgico. Como toda lgebra, la de Boole parte de un cuerpo axiomtico, el cual puede adquirir diversas formas, variando la cantidad y calidad de los axiomas. Aqu en particular tomaremos uno: el propuesto por Huntington en 1904 que tiene la ventaja de ser consistente e independiente.

4.2

Axiomas.
1. Existe un conjunto G de objetos, sujetos a una relacin de equivalencia, denotada por "=" que satisface el principio de sustitucin. Esto significa que si a = b, b puede sustituir a a en cualquier expresin que la contenga, sin alterar la validez de la expresin. 2. (a) Se define una regla de combinacin "+" en tal forma que a + b est en G siempre que al menos a o b lo estn. (b) Se define una regla de combinacin "" en tal forma que a b est en G siempre que tanto a como b lo estn. 3. Neutros. (a) Existe un elemento 0 en G tal que para cada a de G: a + 0 = a (b) Existe un elemento 1 en G tal que para cada a de G: a 1 = a 4. Conmutativos. Para todo par de elementos a y b pertenecientes a G se cumple:

(a) a + b = b + a (b) a b = b a
5. Distributivos. Para toda terna de elementos a, b, c pertenecientes a G se cumple:

(a) a + (b c) = (a + b) (a + c) (b) a (b + c) = a . b + a c
6. Complemento. Para cada elemento a de G existe un elemento a tal que:

aa = 0

a + a =1
7. Existen por lo menos dos elementos x, y en G tal que x <> y

Instituto de Computacin - Facultad de Ingeniera - UDELAR

30

Arquitectura del Computador 1

Notas de Terico

Existe similitud de muchos de estos postulados con los del lgebra comn. Sin embargo, la primera de las reglas distributivas (sobre la suma) y la existencia del complemento diferencian en forma fundamental esta lgebra de la comn.

4.3

Modelo aritmtico.

El ejemplo ms simple del lgebra de Boole se compone de un conjunto G de 2 elementos: "0" y "1". Como es natural estos dos elementos deben coincidir con los neutros de las reglas de combinacin para satisfacer el axioma 3. Las reglas de combinacin debemos definirlas de manera de satisfacer los axiomas. As de acuerdo al axioma 3 :

0+0 = 0 1+ 0 = 1

0 1 = 0 1 1 = 1
1 0 = 0

(a (a

De acuerdo al axioma 4

0 +1 = 1

y teniendo presente el axioma 5 :

1 + (1 0) = (1 + 1) (1 + 0) 1 + 0 = (1 + 1) 1 1 = 1+1 0 (0 + 1) = 0 0 + 0 1 0 1 = 0 0 + 0 0 = 00
Por lo tanto las reglas completas son:

(5a con a = 1, b = 1, c = 0) (por axioma 3) (5b con a = 0, b = 0, c = 1) (por axioma 3)

0+0= 0 0 +1 = 1 1+ 0 = 1 1+1 = 1

00 = 0 0 1 = 0 1 0 = 0 1 1 = 1

Nosotros usaremos esta versin "binaria" del lgebra de Boole.

4.4

Propiedades.
Dualidad

Si analizamos los postulados veremos que los mismos se presentan de a pares y en tal forma que uno de la pareja se obtiene de otro cambiando "0" por "1" junto con "+" por "" (y viceversa). Esto asegura que cada propiedad que se demuestre en esta lgebra tiene una "dual" que tambin es cierta (para demostrar la dual bastara con repetir la demostracin realizada sustituyendo cada postulado o propiedad utilizada por su dual). Asociativa a) b)

a + (b + c) = (a + b) + c a (b c) = (a b) c

Instituto de Computacin - Facultad de Ingeniera - UDELAR

31

Arquitectura del Computador 1

Notas de Terico

Si bien las leyes asociativas son muchas veces incluidas dentro del cuerpo axiomtico, de hecho son demostrables a partir de los axiomas aqu presentados (demostracin que no haremos) por lo cual las presentamos como propiedades. Idempotencia Para todo elemento en G se cumple:

a+a =a aa = a
Demostracin:

a + a = (a + a) 1 a + a = a + (a a ) a+a = a+0 a+a=a aa = a


Neutros Cruzados

(3b) (5a) (6)

a + a = (a + a ) (a + a ) (6)

(Dualidad)

Para todo elemento en G se cumple

a +1 = 1 a0 = 0
Demostracin:

a + 1 = a + (a + a ) a + 1 = (a + a ) + a a +1 = a + a a +1 = 1 a0 = 0

(6) (asociativa) (idempotencia)

(Dualidad)

Entonces los axiomas 1, 2, 3, 4, 5 y 7 se satisfacen por definicin y es fcil verificar que el G (complemento) tambin es cierto. Construimos por lo tanto un modelo "aritmtico" de lgebra de Boole que podemos denominar "binario" y es en definitiva con la que trabajaremos. Muchas veces las reglas de combinacin se presentan como tablas (como las funciones booleanas ms generales que veremos ms tarde)

a
0 0 1 1

b
0 1 0 1

a+b
0 1 1 1

a
0 0 1 1

b
0 1 0 1

ab
0 0 0 1

Instituto de Computacin - Facultad de Ingeniera - UDELAR

32

Arquitectura del Computador 1

Notas de Terico

En general notaremos ab como ab, adems la operacin tendr mayor precedencia que la operacin +. Complemento de complemento Para cada elemento de G se cumple :

a=a

Para todo par de elementos de G se cumple :

a + ab = a a (a + b) = a
Para todo par de elementos de G se cumple :

a + ab = a + b a (a + b) = ab
Ley de De Morgan Para todo par de elementos de G se cumple :

( a + b ) = ab (ab) = a + b
Estas reglas de De Morgan pueden generarse para cualquier nmero de variables.

(a1 + a 2 + ... + a n ) = a1 a 2 ...a n (a1 a 2 ...a n ) = a1 + a 2 + ... + a n


4.5 Modelo lgico.

Los valores que pueden asignarse a un juicio, desde el punto de vista lgico, son dos: verdadero (V) o falso (F). Un juicio al cual se le aplica el operador lgico no (negacin) forma un nuevo juicio. Dos juicios pueden combinarse para formar un tercero mediante los operadores lgicos "o" e "y". Si vinculamos los valores booleanos 0 y 1 con los valores lgicos F y V respectivamente, encontramos que las operaciones del lgebra de Boole "binaria" asigna correctamente los valores lgicos del juicio combinacin. Esto se comprueba observando que: verdadero o verdadero es verdadero verdadero o falso es verdadero falso o verdadero es verdadero falso o falso es falso verdadero y verdadero es verdadero verdadero y falso es falso falso y verdadero es falso falso y falso es falso

Instituto de Computacin - Facultad de Ingeniera - UDELAR

33

Arquitectura del Computador 1

Notas de Terico

Por lo cual se puede concluir que el modelo "lgico" es isomorfo con el "aritmtico" (binario) realizando la correspondencia.

F0 V 1 + .
Es posiblemente consecuencia de este isomorfismo que las reglas de combinacin "+" y "." del lgebra de Boole reciban los nombres de OR ("o" en ingls) y AND ("y" en ingls) respectivamente.

4.6

Modelo circuital.

Otro modelo posible es el que surge de considerar llaves elctricas y asociar el valor A a la llave abierta (no pasa corriente, circuito abierto) y el valor C con la llave cerrada (pasa corriente, circuito cerrado). Es fcil comprobar que la combinacin de llaves en paralelo o en serie cumplen las mismas reglas definidas en el modelo aritmtico para "+" y "." respectivamente. LL1 A A C C LL2 A C A C Circuito PQ + A C C C LL1 A A C C LL2 A C A C Circuito PQ A A A C

Entonces existe tambin un isomorfismo entre el modelo "circuital" y el "aritmtico" si hacemos la asociacin

A0 C 1 paralelo + serie
Este isomorfismo es de fundamental importancia para la construccin prctica de las computadoras binarias.

4.7

Expresiones booleanas.

Llamamos constante a todo elemento del conjunto G que define al lgebra. Las variables podrn tomar como valor cualquier elemento de G ( 0 o 1 en el caso en que trabajamos). Una expresin la podemos definir recursivamente como 1) las constantes y las variables 2) el complemento de una expresin booleana 3) el OR (+) o el AND () de dos expresiones booleanas.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

34

Arquitectura del Computador 1

Notas de Terico

4.8

Funciones booleanas.

Una funcin "F" de n variables x1 ... x n booleanas es una aplicacin del espacio Gn sobre el espacio G de tal forma que para cada valor posible de la n-upla x 1 ... x n, donde cada variable puede tomar cualquier valor del conjunto (en nuestro caso {0, 1} ), se asocia un valor del recorrido G. Una de las formas de expresar F es a travs de las denominadas tablas de verdad que indican el resultado de F para cada valor posible de la n-upla; por ejemplo :

a
0 0 0 0 1 1 1 1

b
0 0 1 1 0 0 1 1

c
0 1 0 1 0 1 0 1

F 0 1 0 0 1 1 0 1

Otras formas de representar F incluyen el mtodo de indicar slo los puntos en los cuales F vale 1 o slo los puntos en los cuales vale 0 (representaciones y respectivamente). Para indicar los puntos en que la funcin vale 1 puede usarse la notacin en lugar de . Por ejemplo, la funcin anterior se puede expresar :

f ( a , b , c ) = (1, 4,5,7 )
sera:

f ( a , b , c ) = ( 0 ,2,3,6 )

Otra forma de expresar las funciones es a travs de expresiones; ejemplo, la funcin anterior

f = ac + ab + abc
4.9 Conectivas binarias.

Un caso interesante de estudiar es el de las funciones booleanas de 2 variables. Por ser dos variables las combinaciones posibles son 4, es decir "F" tiene 4 duplas (4 puntos) por tanto existen 16 funciones booleanas de dos variables posibles. Algunas de ellas no son de interes, veamos las tablas de verdad de las ms tiles. a 0 0 1 1 B 0 1 0 1 or 0 1 1 1 and 0 0 0 1 xor 0 1 1 0 nor 1 0 0 0 nand 1 1 1 0 Equiv. 1 0 0 1 Idemp 0 0 0 0 Tautol. 1 1 1 1

Nota : la NOR es el complemento de la OR la NAND es el complemento de AND la XOR ("O" exclusivo) puede definirse como:

a b = ab + ab
4.9.1 OR exclusivo.

El XOR es una funcin muy importante (es la suma aritmtica binaria mdulo 2) y cumple las propiedades :

Instituto de Computacin - Facultad de Ingeniera - UDELAR

35

Arquitectura del Computador 1

Notas de Terico

1) Asociativa 2) Conmutativa 3) Distributiva: a (b c ) = ab ac 4) a 0 = a 5) a 1 = a 6) a a = 0 7) a b ab = a b 8) Cancelativa: a b = a c b = c 4.9.2 Suma de productos cannicos.

Desarrollaremos a continuacin un mtodo sistemtico para encontrar una expresin algebraica para una funcin cualquiera dada. Definamos producto cannico de n variables x1 ... xn al producto de todas ellas en el cual cada variable aparece una y slo una vez, en forma simple o complementada. Una suma de productos cannicos es una expresin formada sumando productos cannicos. Existe un teorema (que no demostraremos) que afirma que toda funcin f de n variables puede expresarse como:

f (x1 , x 2 ,...., x n ) = x1 x 2 x3 ... x n f (1,1,1,...,1) + x1 x 2 x3 ... x n f (0,1,1,...,1) + x1 x 2 x3 ... x n f (1,0,1,...,1) + .............. + x1 x 2 x3 ... xn f (0,0,0,...,0)
Es decir toda funcin de n variables puede expresarse como la suma de todos sus productos cannicos afectado cada producto cannico por un coeficiente. Este coeficiente es el valor de la funcin evaluado en el punto tal que las variables que en el producto cannico asociado aparecen simples tengan el valor 1 y las que aparecen complementadas el valor 0. Este teorema, de fundamental importancia nos permite enunciar un mtodo de construccin de una expresin que represente una funcin dada. El mtodo es el siguiente: se tienen en cuenta slo los puntos en los que la funcin vale 1 (por el teorema los productos asociados con los puntos en los que la funcin vale 0 desaparecen por estar afectados por un coeficiente nulo: el propio valor de la funcin); en esos puntos se busca el producto cannico asociado que es aquel donde la variable aparece simple si en el punto vale 1 o complementada si vale 0. De esta manera la funcin puede expresarse como suma de los productos cannicos as elegidos. Por ejemplo sea la funcin de tres variables:

a
0 0 0 0 1 1 1 1

b
0 0 1 1 0 0 1 1

c
0 1 0 1 0 1 0 1

F
0 1 0 1 1 0 0 0

abc

abc a bc

Entonces f puede expresarse como f ( a , b, c ) = a b c + a b c + a b c

Instituto de Computacin - Facultad de Ingeniera - UDELAR

36

Arquitectura del Computador 1

Notas de Terico

4.9.3

Productos de sumas cannicas.

Como todo en el lgebra de Boole, existe un mtodo dual del anterior: el producto de sumas cannicas. En este caso deben considerarse los puntos en los que la funcin vale 0 y buscar las sumas cannicas asociadas que son aquellas en las que la variable aparece simple si tiene valor 0 y complementada si tiene valor 1.

4.10 Operadores lgicamente completos.


Un conjunto de operadores se llama lgicamente completo si cualquier funcin booleana puede expresarse mediante los mismos. Del teorema de los productos cannicos, ya enunciado, se extrae una conclusin fundamental tanto del punto de vista lgico como del circuital: el conjunto de operadores +, . y ' es lgicamente completo. Otra consecuencia es que para probar que un cierto conjunto de operadores es lgicamente completo, alcanza con probar que con ellos se pueden implementar el OR, el AND y el NOT (complemento). Es fcil probar que el conjunto OR, NOT es lgicamente completo notando que el AND se puede construir como:

( ab) = a + b

(por De Morgan) a b = (a + b)

Ms interesante an es mostrar que un solo operador, como el NAND, es lgicamente completo. Debemos ver como implementar el NOT y el AND y el OR (representaremos con # el NAND):

a # a = ( a.a ) = a

(complemento) (AND) (OR) por De Morgan

( a # b)# ( a # b) = (a # b) = ( a.b) = a.b ( a # a )# (b # b) = (a.b) = ( a + b) = a + b

Por lo cual el NAND es lgicamente completo.

4.11 Simplificacin.
Hasta ahora hemos visto un mtodo sistemtico de expresar las funciones booleanas como expresin de sus variables. Pero este mtodo no asegura que la expresin lograda sea la ms simple posible. El hecho que la expresin de una funcin sea lo ms simple posible no es algo trivial o caprichoso, es de fundamental importancia en la construccin prctica de circuitos lgicos, por eso analizaremos algunos mtodos para simplificar expresiones booleanas, de manera de aplicarlos a las expresiones obtenidas como sumas de productos cannicos.

4.11.1 Mtodo algebraico. El mtodo consiste en la aplicacin, ms o menos ingeniosa, de transformaciones algebraicas de manera de lograr expresiones ms sencillas. Por supuesto que este no es un mtodo sistemtico, pero es la base, al fin, de los mtodos sistemticos. Resumamos aqu algunas propiedades vistas del lgebra que sern de utilidad en la tarea de simplificar: 1) 2)

f f =0
f + f =1
37

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

3) 4) 5)

g f + gf = f g f + f = f
f + f g = f + g

Veamos un par de ejemplos de como se aplican estas propiedades para reducir expresiones: a) Sea

f 1 = abc + abc + abc

Por la aplicacin de la propiedad 3 a los primeros dos trminos y a los dos ltimos queda

f 1 = ab + bc
b) Sea

f 2 = abc + abc + abc + abc

Aplicando la propiedad 3 a los dos primeros trminos queda

f 2 = bc + abc + abc
f 2 = b(c + a c ) + abc (por la propiedad distributiva)

f 2 = b(c + a ) + abc
f 2 = c(b + ab) + ab

(por la propiedad 5 al parntesis) (por distributiva aplicada dos veces) (por propiedad 5 al parntesis)

f 2 = c ( a + b) + a b

Entonces la expresin de f2 a la que llegamos es:

f 2 = ab + ac + bc
Esta sin embargo no es la expresin ms reducida de f2. Vemos como hubiera quedado aplicando la propiedad 3 al primer y cuarto miembro y al segundo y tercero

f 2 = ac + ab
siendo esta s, la expresin ms reducida. Como vemos entonces el procedimiento descrito no asegura reducir la expresin a un mnimo ya que depende de como se elijan las propiedades a aplicar y los trminos sobre los que se aplican.

4.11.2

Mtodos sistemticos.

Los modelos sistemticos se basan en la propiedad 3 g f + g f = f y son bsicamente uno "grfico" (Diagrama de Karnaugh) y otro "algortmico" o "numrico" (Mtodo de QuineMcKlusky) A continuacin veremos una introduccin al mtodo grfico

4.11.2.1

Diagrama de Karnaugh.

Este mtodo consiste en representar en forma grfica una funcin como suma de productos cannicos y hacerlo de tal forma que sea sencillo establecer procedimientos sistemticos para hallar las agrupaciones de trminos ms convenientes para simplificar la expresin. Esto se logra utilizando una cuadrcula en la cual a cada cuadrado elemental corresponde un producto cannico posible y tal

Instituto de Computacin - Facultad de Ingeniera - UDELAR

38

Arquitectura del Computador 1

Notas de Terico

que al pasar de uno a otro cualquiera de sus cuatro adyacentes solo cambie el valor de una de las variables en juego. Por ejemplo para tres variables la cuadrcula es:

c\ab 00 0 1

01

11

10

Para cuatro variables: cd\ab 00 01 11 10 00 01 11 10

En esta cuadrcula se marcan con "1" los lugares para los cuales la combinacin de valores de las variables hace que la funcin valga 1 y el mtodo consiste en buscar agrupar los "unos" formando los rectngulos ms grandes posibles (que tengan todos 1 en su interior), repitiendo este proceso hasta que todos los puntos donde la funcin vale "1" estn comprendidos en algn rectngulo (siendo la cantidad total de rectngulos utilizados la menor posible). Es necesario aclarar que la cantidad de elementos agrupados debe ser una potencia de 2. Nota: el diagrama es circular (los de cada borde son adyacentes con los del borde simtrico) Ejemplos:

cd\ab 00 01 11 10 cd\ab 00 01 11 10

00 1 1

01 1 1

11 1

10

00 1 1

01 1

11 1

10 1

Una vez realizado el proceso anterior la mnima expresin de la funcin se obtiene sumando los trminos asociados a cada rectngulo los cuales son el producto de las variables (simples o complementadas) cuyo valor no cambia en l. Por ejemplo en los diagramas anteriores sera 1) 2)

f 3 = a c + bcd
f 4 = a d + abc + a cd

Para finalizar veamos como se aplica el mtodo al caso ya visto de la funcin:

f 2 = abc + abc + abc + abc

Instituto de Computacin - Facultad de Ingeniera - UDELAR

39

Arquitectura del Computador 1

Notas de Terico

El diagrama de Karnaugh correspondiente es

c\ab 00 01 11 10 0 1 1 1 1 1
Entonces la funcin queda f 2 = ac + ab la cual coincide, como era de esperar, con la expresin ms reducida hallada por el mtodo "algebraico". La primer expresin de f2 hallada con dicho mtodo tena adems el trmino bc que corresponde al rectngulo formado por los dos extremos inferiores del diagrama que aqu queda evidente que no era necesario puesto que con los otros dos trminos cubrimos todos los puntos donde la funcin vale "1".

Instituto de Computacin - Facultad de Ingeniera - UDELAR

40

Arquitectura del Computador 1

Notas de Terico

5
5.1

CIRCUITOS COMBINATORIOS
Introduccin

En este captulo presentaremos los elementos bsicos para la implementacin en hardware de las funciones lgicas y ejemplos de cmo se pueden sintetizar funciones ms complejas en base a operaciones ms simples disponibles como "bloques". En general trabajaremos con los "Circuitos Combinatorios", que los definimos como aquellos cuya salida est determinada, en todo instante, por el valor de sus entradas actuales. Antes de presentar la forma de representar las funciones lgicas bsicas, veremos brevemente como se implementan las mismas en trminos electrnicos.

5.2

Transistores

Ya dijimos que el Modelo Circuital del lgebra de Boole permite la construccin mediante "llaves elctricas" de un lgebra isomrfica con el Modelo Binario. Para ello necesitamos que estas llaves puedan ser controladas (es decir accionadas) por los valores que adoptan las variables (que en el modelo estn representados por 0 = no circula corriente y 1 = circula corriente). Para ello el primer mecanismo que se us (de hecho en la computadora MARK I en la dcada del 40) fue el rel (llave electromagntica). El diagrama de un dispositivo de estas caractersticas es:

Al circular una corriente i por el circuito de la izquierda la bobina genera un campo electromagntico que acciona el interruptor, el cul permite el pasaje de la corriente I por el circuito de la derecha. Este esquema corresponde a un rel "normalmente abierto". Existen tambin los rels "normalmente cerrados", en los cuales el mecanismo electromagntico funciona a la inversa: la induccin de la bobina provoca la apertura del interruptor. Si en un sistema con rels tomamos el estado "circula corriente" como 1 y "no circula corriente" como 0, es directo observar que un rel normalmente cerrado implementa la funcin NOT. En ese modelo tambin es sencillo de observar que el siguiente circuito implementa la funcin AND entre dos corrientes ia e ib:

ia

ib

Instituto de Computacin - Facultad de Ingeniera - UDELAR

41

Arquitectura del Computador 1

Notas de Terico

Los rels fueron luego reemplazados por las vlvulas de vaco. Estos dispositivos fueron los primeros completamente electrnicos utilizados en una computadora: la ENIAC.

Tomado de Virtual Valve Museum (http://en.wikipedia.org/wiki/Image:Triode.jpg)

Tomado

de

Wikipedia

En el caso de la vlvula de vaco tipo "Triodo" (como la mostrada en el diagrama) la diferencia de potencial entre la "rejilla" y el "ctodo" controlan el pasaje de electrones entre el "nodo" y el "ctodo", con lo cual el triodo es una llave controlada por diferencia de potencial ( "tensin", "voltaje"). A fines de la dcada del 50 se inventa el transistor, el cul, con algunas variantes, es el que se utiliza hasta ahora y que ha permitido alcanzar densidades de millones de unidades por centmetro

cuadrado.
Tomado de Wikipedia (http://es.wikipedia.org/wiki/Imagen:Transistor-photo.jpg)

El funcionamiento de un transistor bipolar aplicado a la lgica digital es bsicamente el de una llave electrnica muy similar a un rel.

B i

C I E

Los transistores se pueden definir, en principio, como "amplificadores de corriente" ya que al circular una corriente i entre la base (B) y el emisor (E) del transistor se produce la circulacin de una corriente I entre el colector (C) y el emisor (E), cumpliendo la relacin:

I = hFE * i
siendo

hFE una constante tpica de cada modelo de transistor. Esta relacin de


42

Instituto de Computacin - Facultad de Ingeniera - UDELAR

Arquitectura del Computador 1

Notas de Terico

proporcionalidad es vlida en el denominado modo de funcionamiento "lineal" y es utilizada por ejemplo en los dispositivos que trabajan con seales analgicas, como equipos de audio, televisores, etc. El funcionamiento en modo "lineal" depende, bsicamente, del circuito donde el transistor se coloca. Sin embargo en las aplicaciones de lgica digital a los transistores se los hace trabajar en el modo de funcionamiento "saturacin", donde la corriente I alcanza su valor mximo (determinado por otros parmetros del circuito). Por otra parte, y al igual que en las aplicaciones analgicas, la magnitud elctrica que se considera es la diferencia de potencial elctrico (o "voltaje") en lugar de la corriente. Dada la conocida relacin entre diferencia de potencial y corriente elctrica dada por la Ley de Ohm:

V = R * I
Como muchas veces se consideran las diferencias de potencial V con respecto a una referencia comn (denominada "tierra lgica") es que se aplica la relacin anterior en la forma:

V = R * I
Entonces veamos como queda el transistor cuando agregamos resistencias en su base y en su colector:

El modo de funcionamiento de saturacin se alcanza cuando el valor de

Ve (diferencia de

potencial o voltaje de entrada) es tal que la corriente entre base y emisor (IBE) genera una corriente entre colector y emisor (ICE) tal que la cada de potencial en la resistencia RC colocada entre el colector y la fuente de alimentacin coincide con la diferencia de potencial de sta. Esto equivale a decir que la diferencia de potencial entre colector y emisor es 0. En realidad en la prctica dicha diferencia nunca puede llegar a ser menor que un cierto valor denominado "voltaje de saturacin colector emisor" (VCEsat), por lo que la condicin de saturacin se da cuando se cumple la relacin:

VCC - VCEsat = RC * hFE * IBE


El valor de VCEsat es aproximadamente 0,2 Volts, pero a los efectos se toma como 0. Por su lado la corriente IBE circula cuando Ve > VBE siendo VBE una diferencia de potencial que se produce entre base y emisor de un transistor y cuyo valor un parmetro caracterstico de los mismos y vale aproximadamente 0,6 Volts. Por ley de Ohm la corriente de base cumple:

Ve - VBE = RB * IBE
despejando IBE y sustituyendo resulta:

VCC - VCEsat = RC * hFE * (Ve - VBE) / RB

Instituto de Computacin - Facultad de Ingeniera - UDELAR

43

Arquitectura del Computador 1

Notas de Terico

En definitiva si se eligen correctamente los valores de las resistencias de base y colector para que el sistema funcione en saturacin para cuando el valor de la entrada sea Ve = VCC se cumplir que: si Ve = VCC entonces Vs = 0 Por otra parte si no circula corriente entre base y emisor tampoco circular corriente entre colector y emisor. Esto significa que no circular corriente por la resistencia de colector y, de acuerdo a la ley de Ohm, no habr entonces cada de potencial entre los extremos de la misma, por lo que se cumplir que: si Ve = 0 entonces Vs = VCC Si consideramos que el voltaje 0 corresponde a un 0 lgico y el voltaje igual al de la fuente VCC corresponde a un 1 entonces vemos que el circuito anterior implementa la operacin NOT.

5.3
5.3.1

Lgicas
Lgica RTL

En base a las ideas manejadas en el circuito del NOT hecho en base a un transistor y resistencias se pueden construir las dems conectivas binarias. En particular dado que el NOR es un operador lgicamente completo alcanza con mostrar como se puede construir con transistores y resistencias para poder afirmar que es posible construir cualquier funcin lgica binaria de esta forma. La construccin de funciones lgicas con esta tcnica, empleando transistores y resistencias, se denomina RTL (Resistor Transistor Logic). Veamos el siguiente circuito en RTL:

Es simple de verificar que el circuito cumple que: si Va = 0 y Vb = 0 entonces Vs = VCC si Va = 0 y Vb = VCC entonces Vs = 0 si Va = VCC y Vb = 0 entonces Vs = 0 si Va = VCC y Vb = VCC entonces Vs = 0 ya que la conduccin de cualquiera de los dos transistores provocar que la cada de potencial en la resistencia de colector lleve el voltaje de salida a 0. Dicho comportamiento en voltajes equivale a la tabla de verdad del NOR. Por tanto hemos logrado mostrar que es posible construir cualquier funcin lgica en base a un diseo RTL.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

44

Arquitectura del Computador 1

Notas de Terico

5.3.2

Lgica TTL

En la prctica la lgica RTL no se usa porque la utilizacin de las resistencias en la forma que aparecen en el circuito genera una disipacin de calor muy grande (la energa disipada por una resistencia es proporcional al valor de sta y al cuadrado de la corriente que circula por ella de acuerdo a la Ley de Joule). Para mejorar la situacin se busca agregar transistores de forma de utilizar la capacidad de amplificar corriente que poseen para disminuir la corriente circulante por las resistencias. Esta tcnica si bien sigue empleando resistencias, tiene una fuerte dependencia de los transistores para lograr su cometido por lo que se denomina tecnologa TTL (Transistor Transistor Logic). El circuito del NOR queda de la siguiente manera en TTL:

Tomado de Hoja de Datos de SN7402 de Texas Instruments

La ms famosa familia de circuitos integrados construidos con lgica TTL se identific con nmeros de 4 5 dgitos que comienzan con 74. Ejemplos: 7400 -> circuito integrado con 4 circuitos NAND de dos entradas 7402 -> circuito integrado con 4 circuitos NOR de dos entradas 7406 -> circuito integrado con 6 circuitos NOT 7408 -> circuito integrado con 4 circuitos AND de dos entradas 7432 -> circuito integrado con 4 circuitos OR de dos entradas 74193 -> circuito contador sincrnico de 4 bits 5.3.3 Lgicas TTL S/LS/ALS

Uno de los problemas de la lgica TTL sigue siendo el relativo alto consumo de energa y su relativa baja performance en alta frecuencia. Esto se mejor con la utilizacin de transistores de mejores prestaciones, denominados Schottky (en honor a su inventor). Esto dio lugar a variantes de la familia 74, conocidas como 74S, 74LS y 74ALS. Las letras adicionales significan: S = Schottky LS = Low power Schottky ALS = Advanced Low power Schottky

Instituto de Computacin - Facultad de Ingeniera - UDELAR

45

Arquitectura del Computador 1

Notas de Terico

5.3.4

Tecnologa CMOS

La tecnologa Schottky no modific el hecho que siguieran siendo transistores bipolares, los cuales tienen una caracterstica inherente de consumir energa an cuando estn en reposo (sus corrientes de "fuga" son relativamente elevadas). Tambin el hecho de poseer una resistencia interna equivalente cuando est en modo conduccin genera una disipacin de calor alta dependiendo del estado de la salida (es decir cuando conducen no son un conductor perfecto y presentan una resistencia significativa al pasaje de corriente). Por eso luego de algunas dcadas de predominancia de este tipo de transistores en los circuitos integrados, los mismos fueron reemplazados por transistores FET (Field Effect Transistor) construidos en base a tecnologa CMOS (Complementary Metal Oxide Semiconductor). Los transistores construidos con esta tecnologa tienen corrientes de fuga prcticamente nulas por lo que su consumo es despreciable en reposo, y por la forma que se construyen los circuitos con ellos slo disipan energa cuando conmutan (sus salidas pasan de un valor a otro respondiendo al cambio de sus entradas). Por otro lado su resistencia interna es prcticamente nula en modo de conduccin. La desventaja inicial que tenan de mala respuesta a cambios rpidos de sus entradas (o sea mala respuesta en frecuencia) fue superada con el tiempo con lo que han terminado por reemplazar totalmente a los transistores bipolares. Un transistor IGFET (Insulated Gate Field Effect Transistor, tambin conocido como MOSFET) se puede considerar como una llave electrnica controlada por voltaje casi perfecta, cuyo smbolo es:

Otros smbolos posibles son:

Los MOSFET de canal-n tienen "lgica positiva", mientras que los canal-p tienen "lgica negativa", ya que funcionan de acuerdo al siguiente esquema:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

46

Arquitectura del Computador 1

Notas de Terico

Con esta tecnologa el circuito del NOT se construye de la siguiente manera:

La caracterstica sealada de disipar energa solamente en la conmutacin (cambio de estado) se puede observar analizando en el circuito del NOT. Como el voltaje de entrada no cambia inmediatamente de 0 a Vcc o viceversa, hay una fraccin de tiempo durante la cual el voltaje est en valores intermedios que hacen conducir simultneamente a ambos transistores. Ese estado de conduccin intermedio presenta valores de resistencia interna bajos (aunque superiores a la resistencia nula de la conduccin plena). Este fenmeno genera picos importantes de corriente, los cuales circulan por los transistores en un modo de conduccin intermedio, lo que representa, en definitiva, la generacin de calor. Este fenmeno hace que los circuitos integrados fabricados con CMOS tengan una disipacin de calor proporcional a la frecuencia de trabajo del circuito. Por su lado el circuito del NOR es:

5.4

Compuertas

La implementacin en circuitos de las conectivas binarias bsicas se denominan habitualmente "compuertas". As tendremos compuertas AND, OR, NAND, NOR, XOR y NOT.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

47

Arquitectura del Computador 1

Notas de Terico

Las compuertas se representan por smbolos grficos. Existen dos grandes familias de smbolos, los tradicionales (smbolos "redondeados") y los propuestos por el estndar ANSI/IEEE 911984 / IEC Publication 617-12 (smbolos "rectangulares").

5.5

Circuitos Lgicos Combinatorios

Los circuitos lgicos combinatorios, o simplemente circuitos combinatorios, son circuitos elaborados a partir de compuertas o de otros circuitos del mismo tipo (usados como "bloque constructivo") cuya salida es una funcin lgica de sus entradas y por tanto las salidas actuales slo dependen del valor actual de las entradas. Los circuitos combinatorios son, en definitiva, la implementacin en hardware de funciones lgicas (funciones booleanas). Los circuitos se representan como "cajas negras" de las cuales se especifican las entradas, las salidas y la funcin booleana que las vincula.

5.6

Sntesis de Circuitos Combinatorios

Una forma siempre aplicable (aunque en algunos casos ms trabajosa) para construir un circuito lgico parte de la funcin booleana a implementar representada, por ejemplo, mediante su tabla de verdad. A partir de ella y mediante Diagrams de Karnaugh (u otro mtodo) se realiza la minimizacin (en dos niveles) de la misma. De esa forma se llega a una expresin de la funcin en base a operaciones NOT y ANDs y ORs (multipuerta). Una alternativa es identificar partes del circuito que se puedan realizar con otros "bloques constructivos" de mayor nivel, tales como sumadores de n bits, multiplexores, decodificadores, comparadores, selectores, etc. Luego se renen y conectan adecuadamente estos bloques minimizando, de ser necesario, la lgica de dichas conexiones mediante Diagrams de Karnaugh. Veremos a continuacin un par de ejemplos de aplicacin de la metodologa.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

48

Arquitectura del Computador 1

Notas de Terico

5.6.1

Circuito Mayora Consideremos la funcin booleana determinada por la tabla de verdad: a 0 0 0 0 1 1 1 1 b 0 0 1 1 0 0 1 1 c 0 1 0 1 0 1 0 1 M 0 0 0 1 0 1 1 1

El diagrama de Karnaugh correspondiente resulta:

c\ab 00 01 11 10 0 1 1 1 1 1
La funcin minimizada queda: M = ab + ac + bc Entonces el circuito en base a compuertas AND, OR y NOT tiene la forma:

5.6.2

Circuito Semi-sumador de 2 bits

Consideremos ahora la funcin booleana determinada por la tabla de verdad, donde s1s0 representa la suma en binario de las entradas a1a0 y b1b0. La salida c es el Carry (acarreo):

a1
0 0 0 0 0 0 0 0

a0 b1 b0
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

s1
0 0 1 1 0 1 1 0

s0
0 1 0 1 1 0 1 0

c
0 0 0 0 0 0 0 1

Instituto de Computacin - Facultad de Ingeniera - UDELAR

49

Arquitectura del Computador 1

Notas de Terico

a1
1 1 1 1 1 1 1 1

a0 b1 b0
0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1

s1
1 1 0 0 1 0 0 1

s0
0 1 0 1 1 0 1 0

c
0 0 1 1 0 1 1 1

Los diagramas de Karnaugh correspondientes con: s1 b1b0\ a1a0

00

01 1

00 01 11 10
s0 b1b0\ a1a0

11 1 1

10 1 1

1 1

00 1 1

00 01 11 10
c b1b0\ a1a0

01 1

11 1

10 1 1

00

01

11 1 1 1

10

00 01 11 10

1 1

Por lo que las expresiones mnimas de las salidas son: b v s1 = a1b1b0 + a1a0b1 + a1a0b1b0 + a1a0b1b0 + a1a0b1 + a1b1b0 s0 = a0 0 + 0b0 s0 = a0b0 + a0b0 c = a1a0b0 + a0b1b0 + a1b1 Los esquemas de los circuitos basados en compuertas para las tres salidas en funcin de sus expresiones mnimas se presentan a continuacin.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

50

Arquitectura del Computador 1

Notas de Terico

Dado que los tres circuitos corresponden al mismo sistema y tienen las mismas entradas, tambin puede considerarse un circuito que reutiliza las compuertas NOT y genera las tres salidas como en el siguiente esquema.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

51

Arquitectura del Computador 1

Notas de Terico

5.7

Bloques Constructivos

A continuacin veremos algunos ejemplos de circuitos combinatorios tiles para ser utilizados como parte de diseos ms complejos. De hecho estos circuitos, o algunas variantes de ellos, estn disponibles como circuitos integrados independientes, pensando en dicho propsito. Conforman la base del concepto de re-utilizacin que introdujo la electrnica digital hace ms de 4 dcadas y que la industria del software imit con los conceptos de modularidad, re-usabilidad de cdigo y orientacin a objetos.

5.7.1

Circuito Decodificador
N

El circuito decodificador es un circuito con N entradas y 2 salidas. Para el caso de N = 3 tiene el siguiente smbolo:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

52

Arquitectura del Computador 1

Notas de Terico

Su tabla de verdad es:

A
0 0 0 0 1 1 1 1

B
0 0 1 1 0 0 1 1

C
0 1 0 1 0 1 0 1

Y7 0 0 0 0 0 0 0 1

Y6 0 0 0 0 0 0 1 0

Y5 0 0 0 0 0 1 0 0

Y4 0 0 0 0 1 0 0 0

Y3 0 0 0 1 0 0 0 0

Y2 0 0 1 0 0 0 0 0

Y1 0 1 0 0 0 0 0 0

Y0 1 0 0 0 0 0 0 0

es decir dada una combinacin de unos y ceros a la entrada todas las salidas estarn en 0 salvo la que corresponda al nmero binario coincidente con la combinacin de entradas. En la prctica este circuito est disponible con lgica negativa (las salidas son 1 salvo la seleccionada) y con entradas adicionales funcionando como un demultiplexor (circuito que veremos ms adelante). El circuito "interno" de un decodificador es simple:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

53

Arquitectura del Computador 1

Notas de Terico

5.7.2

Circuito Multiplexor

El circuito multiplexor es un circuito con N + 2N entradas y 1 salida. Para el caso de N = 3 tiene el siguiente smbolo:

Su tabla de verdad es:

A
0 0 0 0 1 1 1 1

B
0 0 1 1 0 0 1 1

C
0 1 0 1 0 1 0 1

Y D0 D1 D2 D3 D4 D5 D6 D7

es decir que la salida Y toma el valor de la entrada D cuyo ndice coincida con el nmero binario representado por las entradas A, B y C. Las entradas A, B y C se llaman entradas de "control" y las entradas D se llaman de "datos". Se denomina multiplexor porque es capaz de presentar en una sola variable Y cualquiera de N las 2 entradas. Esto tiene aplicaciones cuando la salida Y es un "canal principal de comunicacin", mientras que las entradas D son "sub-canales de comunicacin". Este circuito permite que variando en el tiempo las entradas de control logremos dividir la utilizacin del canal principal entre los subcanales. Esta tcnica se denomina TDM (Time Division Multiplexing). De all que el circuito se denomine multiplexor. Una caracterstica distintiva del circuito multiplexor es su aplicabilidad para la realizacin de funciones lgicas. Consideremos el siguiente circuito basado en un multilexor 8 a 1:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

54

Arquitectura del Computador 1

Notas de Terico

Si escribimos la tabla de verdad de este circuito nos queda:

a
0 0 0 0 1 1 1 1

b
0 0 1 1 0 0 1 1

c
0 1 0 1 0 1 0 1

M 0 0 0 1 0 1 1 1

que coincide con la tabla de verdad del circuito Mayora (a, b, c). Si observamos nuevamente la tabla de verdad resumida del circuito multiplexor constataremos que asignando un valor apropiado a cada una de las entradas del datos D, estamos en condiciones de generar el valor 0 1 correspondiente a cada una de las combinaciones de los bits de control (entradas A, B, C). Esto permite construir cualquier funcin lgica de n variables con un multiplexor de n entradas de control. Los circuitos integrados disponibles (como el 74251) disponen de salida "tri-state" (el concepto de tri-state se ver ms adelante) controlada por una entrada adicional G y una salida de lgica invertida W:

Por ms informacin ver el documento: http://www.fairchildsemi.com/ds/DM/DM74ALS251.pdf 5.7.3 Circuito Demultiplexor

El circuito demultiplexor realiza la tarea inversa al multiplexor. Posee 1 entrada de datos, N entradas de control y 2N salidas, segn el smbolo:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

55

Arquitectura del Computador 1

Notas de Terico

Su tabla de verdad es muy similar a la del decodificador, con la diferencia que el valor de la salida seleccionada depende de la entrada G:

A
0 0 0 0 1 1 1 1

B
0 0 1 1 0 0 1 1

C
0 1 0 1 0 1 0 1

Y7 0 0 0 0 0 0 0 G

Y6 0 0 0 0 0 0 G 0

Y5 0 0 0 0 0 G 0 0

Y4 0 0 0 0 G 0 0 0

Y3 0 0 0 G 0 0 0 0

Y2 0 0 G 0 0 0 0 0

Y1 0 G 0 0 0 0 0 0

Y0 G 0 0 0 0 0 0 0

El circuito interno equivalente de un demultiplexor es:

En la prctica solamente se consiguen circuitos integrados demultiplexores y no existen decodificadores "puros", ya que con ellos es muy simple construir un decodificador (basta poner la entrada G en 1). Es el caso, por ejemplo, del circuito 74138, el cual tiene las salidas con lgica negada y adems posee dos entradas adicionales de lgica negada (que estn en AND con la entrada de lgica directa):

Instituto de Computacin - Facultad de Ingeniera - UDELAR

56

Arquitectura del Computador 1

Notas de Terico

Por ms informacin ver el documento: http://www.fairchildsemi.com/ds/DM/DM74ALS138.pdf 5.7.4 Circuito Sumador Completo de 1 bit

Veremos a continuacin un circuito que puede ser utilizado para construir sumadores de n bits, mediante su conexin en "cascada". Para ello deberemos construir un sumador de dos nmeros de 1 bit cada uno con entrada y salida de acarreo (carry). La tabla de verdad de este circuito es:

a
0 0 0 0 1 1 1 1

b
0 0 1 1 0 0 1 1

cin S cout
0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 1

Minimizando usando Diagrama de Karnaugh: S

cin \ab 0 1
cout

00 01 11 10 1 1 1 1

cin \ab 0 1

00 01 11 10 1 1 1 1

(Nota: observar que cout tiene el mismo diagrama que el circuito Mayora) Con esto quedan las ecuaciones: S = cin + b in + abcin + a in S = abcin + abcin + abcin + abcin cout = ab + acin + bcin

Instituto de Computacin - Facultad de Ingeniera - UDELAR

57

Arquitectura del Computador 1

Notas de Terico

El circuito que se obtiene sera entonces:

Este es un caso donde se puede observar que el mtodo de Karnaugh permite hallar un circuito mnimo en dos niveles, pero no necesariamente el circuito que tenga el menor nmero de compuertas. Si observamos la expresin de S: S = cin + b in + abcin + a in v S = abcin + abcin + abcin + abcin y trabajamos con ella resulta: S = cin + b i in S = (ab+ab)cin + (ab+ab)cin

El segundo parntesis corresponde a la expresin del xor entre a y b. El primero a la negacin de dicho exor: S = b in v S = (ab)cin + (ab)cin Podemos observar en la expresin anterior que ahora queda el exor entre el exor de a y b con cin. S = (ab)cin Por otra parte la expresin del carry de salida es: cout = ab + acin + bcin que podemos agrupar como: cout = ab + (a+b)cin y esto es equivalente a: cout = ab + (ab)cin (esto se debe a que el nico caso donde a+b es distinto de ab es cuando a y b son 1 simultneamente y all ab es 1 y por tanto el or general da 1 de todos modos).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

58

Arquitectura del Computador 1

Notas de Terico

El circuito que resulta de estas nuevas expresiones es:

que, como se puede observar directamente, posee muchas menos compuertas que la versin anterior. Como nada es "gratis" tambin se observa que el circuito tiene un nivel ms de compuertas (normalmente el nivel de compuertas "not" no se cuenta, por lo que el circuito original tiene 2 niveles y este tiene 3). Esto desde el punto de vista lgico no presenta dificultades. Pero en la prctica existe un fenmeno (tiempo de setup o propagacin) que desaconseja el incorporar ms niveles de compuertas en los circuitos. Este fenmeno lo estudiaremos ms detenidamente en el siguiente punto. Antes de pasar a l veamos como quedara un sumador de 4 bits en base a sumadores de 1 bit:

5.8

Tiempo (Retardo) de Propagacin


Desde el punto de vista lgico el siguiente circuito:

tiene su salida siempre en 0. Sin embargo dicho comportamiento terico no se cumple en la realidad, ya que los circuitos electrnicos que implementan las distintas compuertas (y en el caso particular el NOT) no cambian su salida en forma instantnea frente a un cambio en su(s) entrada(s). Existe un cierto tiempo que se requiere para que las distintas etapas del circuito se acomoden al nuevo estado de conduccin y generen las magnitudes (voltaje, corriente) necesarias para llevar la salida al nivel lgico acorde a la

Instituto de Computacin - Facultad de Ingeniera - UDELAR

59

Arquitectura del Computador 1

Notas de Terico

expresin lgica. Este tiempo recibe distintos nombres, tales como "tiempo de propagacin", "retardo de propagacin", "retardo de conmutacin" o "tiempo de setup". Este tiempo puede ir de menos de 1 ns (nanosegundo, 1 ns = 10E-9 segundos) a ms de 1 s (microsegundo, 1s = 10E-6 segundos), dependiendo de la tecnologa y caractersticas de los circuitos de las compuertas. El efecto que produce el fenmeno se puede visualizar en el siguiente diagrama de tiempo:

Tp

t E

t En el diagrama se ha omitido considerar el retardo de propagacin de la compuerta AND, porque de hecho no interesa a los efectos de analizar el problema. El retardo de propagacin en la compuerta NOT produce que cuando la entrada E cambia a 1, la salida del NOT demora en pasar a 0 un cierto tiempo Tp. Durante ese tiempo ambas entradas del AND estn en 1 con lo cual su salida pasar a 1 (en vez de quedarse en 0 que sera su estado lgico de acuerdo al circuito, si ste fuera ideal). Recin cuando la salida del NOT cambie la salida del AND ir a su valor correcto. El fenmeno produjo un "pulso" a la salida que no debera haber existido. El fenmeno se puede compensar con tcnicas apropiadas de diseo de los circuitos lgicos, las que se basan en compensacin de recorridos de las distintas seales y en agregar compuertas, asociadas a rectngulos redundantes en los diagramas de Karnaugh, de modo de evitar la generacin de estas salidas espreas. Estos fenmenos se denominan genricamente "azares estticos".
Por este fenmeno es que normalmente se prefieren circuitos con pocos niveles de compuertas entre sus entradas y sus salidas. Si pensamos que el circuito de sumador completo de 1 bit que usamos para generar el circuito sumador de 4 bits tiene un retardo Tp, entonces el sumador de 4 bits tendr 4xTp, o en general NxTp, siendo N el nmero de bloques en cascada que se conecten. Al crecer el retardo de propagacin, las salidas demoran ms en ser vlidas y poder ser consideradas como entradas para etapas siguientes. Adems la velocidad a la que podemos cambiar las seales (frecuencia de conmutacin) estar en relacin inversa al tiempo de propagacin, ya que cuanto ms alto este tiempo menor ser la velocidad a la que podr cambiar las entradas (para darle tiempo a que las salidas se estabilicen antes de cambiar nuevamente las entradas).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

60

Arquitectura del Computador 1

Notas de Terico

6
6.1

MEMORIAS ROM
Introduccin

En este captulo analizaremos un circuito combinatorio especial, que por su variedad de aplicaciones merece un tratamiento diferenciado del resto. Este circuito tiene m entradas y n salidas. Para el caso de m = 14 y n = 8 el smbolo que lo representa es:

Las entradas se identifican por A0 a A13 y las salidas por D0 a D7 (en este caso). Para un caso genrico sera: A0 a Am-1 y D0 a Dn-1. Ms adelante veremos que son y para qu se usan las entradas CS y OE.

6.2

Caractersticas
La tabla de verdad de un circuito ROM est formado por 2m filas y n columnas:

Am1

Am2

Am3

Entradas . .
. . . . . . . . . . . . . . . .

A2 0 0 0 . . 1 1 1

A1 0 0 1 . . 0 1 1

A0 0 1 0 . . 1 0 1

Dn-1 Dn-2 0 1 0 . . 1 0 1 0 0 0 . . 1 1 1

Salidas
. . . . . . . .

D1 0 1 0 . . 1 0 1

D0 0 0 0 . . 1 1 1

0 0 0 . . 1 1 1

0 0 0 . . 1 1 1

0 0 0 . . 1 1 1

La coleccin de 0 y 1 que hemos colocado en las salidas es una cualquiera de las posibles. De hecho podemos representar genricamente una de las salidas como: Dij siendo 0 < i < 2m - 1 0<j<n-1

Esta tabla de verdad puede verse como la descripcin del contenido de un "array" de 2m elementos que tienen n bits cada uno. Como es un circuito combinatorio, los valores concretos de los bits de los elementos (los Dij) son fijos, predeterminados. Por estas dos caractersticas a estos

Instituto de Computacin - Facultad de Ingeniera - UDELAR

61

Arquitectura del Computador 1

Notas de Terico

circuitos se los llama Read Only Memory (Memoria de Solo Lectura), o, ms brevemente, ROM. Es fcil observar que con una ROM se puede implementar cualquier funcin lgica de m variables de entrada y n salidas. Basta con especificar el "contenido" de la ROM de manera que los n bits de cada palabra (posicin del array) correspondan al valor de la funcin en el punto (que coincide con el ndice del array).

6.3

Circuito Interno
El circuito interno de una ROM tiene, para cada bit de salida, la siguiente forma:

El fabricante de la ROM coloca la entrada de la AND asociada a Dij en 0 en 1, en funcin de la tabla de verdad que le especifiquemos. Para ello conecta la entrada a "tierra" o a "Vcc".

6.4

Variantes Tecnolgicas

Las ROMs as construidas tienen el inconveniente que una vez que se fabrican no es posible cambiar su contenido. Esto no sera un problema significativo cuando usamos las ROMs como circuito combinatorio. Sin embargo el uso habitual de las ROMs es el de almacenar programas fijos (ej: las rutinas de inicio de un computador, el programa almacenado de un controlador de un semforo, un ascensor, un lavarropas, etc). Los programas tienen correcciones y mejoras constantes, por lo que es poco prctico (y poco rentable) tener que producir nuevas ROMs cada vez que hay un cambio. Por ello se fueron desarrollando con el tiempo nuevos circuitos que dieran respuesta a esta situacin: por un lado fueran memorias permanentes (no perdieran su contenido al quedar sin energa elctrica) y por otro pudiera ser modificado su contenido de alguna forma. 6.4.1 PROM

Las PROM son Programmable ROM. Una PROM es una ROM cuyo contenido puede ser definido a posteriori de construida, mediante una actividad de programacin que se realiza utilizando un circuito electrnico especial (un Programador de PROMs).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

62

Arquitectura del Computador 1

Notas de Terico

En esencia son ROMs que tienen en su entrada Dij a las ANDs de seleccin una conexin tanto a ground (0) como a Vcc (1). Esta conexin est realizada mediante un fusible, el cual se quema al momento de "programar" el contenido de la PROM. Si quiero grabar un 0 quemo el fusible de la conexin a Vcc y si quiero grabar un 1 quemo el fusible de la conexin a tierra. Estos fusibles no pueden reconstruirse. Cuando se graba una PROM con un cierto contenido no hay marcha atrs. 6.4.2 EPROM

Si bien las PROMs significaron un avance, el hecho de no tener "vuelta atrs" an significaba una restriccin para el uso intensivo de PROMs en el almacenamiento de programas. De esa necesidad no del todo satisfecha surgi la tecnologa de las EPROM (Erasable PROM). Una EPROM es una ROM que puede ser borrada. El mecanismo de borrado es totalmente distinto al de programacin e implica un proceso de exposicin del circuito a luz ultravioleta por varios minutos. La gran ventaja es que puede reutilizar las EPROMs muchas veces borrando su contenido y grabando uno nuevo. Para ello las EPROM disponen de una ventana transparente en el encapsulado cermico plstico del circuito integrado.

Tomado de Wikipedia Bill Bertram 2006

Esa ventana expone el propio chip de silicio, de forma de poder irradiar adecuadamente el material con luz ultravioleta de forma de revertir las modificaciones fsico-qumicas producidas por el proceso de grabacin por impulsos elctricos, mediante un dispositivo especfico: Programador de EPROMs. Esta ventana est normalmente tapada de forma de evitar exponer el silicio a la luz normal (que contiene componentes ultravioletas) para que el contenido de la EPROM no se altere.

Instituto de Computacin - Facultad de Ingeniera - UDELAR

63

Arquitectura del Computador 1

Notas de Terico

De todos modos como el fenmeno tambin se produce ante la presencia de otro tipo de radiaciones (como los rayos csmicos) que no pueden detenerse con una etiqueta, el contenido de las EPROMs termina alterndose con el tiempo (aunque, por suerte, este tiempo es sumamente largo, de varias decenas de aos). Como se dijo su principal uso es el almacenamiento de los programas permanentes de un sistema. Su capacidad de desde algunos kilobits hasta del orden de 8 Megabits. Muchas veces estn organizadas en palabras de 8 bits (byte). 6.4.3 EEPROM

Las EPROM si bien solucionan el problema de la re-usabilidad de este tipo de memorias, todava tienen el inconveniente que este proceso es sumamente lento, complejo y requiere retirar la EPROM del sistema para realizar el borrado. Es as que surgieron las EEPROM (Electrical EPROM), o sea una EPROM cuyo proceso de borrado se hace elctricamente y puede efectuarse sin retirar el circuito integrado del sistema. Posee otra diferencia importante con la EPROM: una EEPROM normalmente tiene la capacidad de borrar cada bit en forma individual (tambin hay implementaciones que borran una palabra completa en cada operacin de borrado). Tpicamente se utilizan para almacenar los datos de configuracin de un sistema. Tienen una capacidad de hasta del orden de 128 kbits. Es frecuente que estn organizadas en palabras de un solo bit. 6.4.4 Flash EEPROM / Flash EPROM / Flash Memory

Este tipo de memoria es una variante de las EEPROM que se desarroll con el objetivo de mejorar el tiempo de borrado, de forma de habilitar su uso para aplicaciones de almacenamiento masivo. Si bien el nombre est asociado al concepto de velocidad (lo que se corresponde con lo antedicho), el nombre se origina en la similitud que uno de sus creadores vea entre el proceso de borrado y el destello del flash de una cmara de fotos. Su aplicacin ms difundida es la de almacenamiento masivo (reemplazo de discos duros o disquetes), ya que su tiempo de acceso es varios rdenes de magnitud menor que la de dichos dispositivos. Las capacidades de los chips llegan en la actualidad a del orden de 1 Gbit, y estn organizados en palabras de 8 , ms habitualmente, 16 bits.

Tomado de Intel

En la foto siguiente se puede ver la parte interna de una Memoria USB, que actualmente se usa para almacenar informacin en forma transportable (lo que antes se haca con disquetes).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

64

Arquitectura del Computador 1

Notas de Terico

6.5

Capacidad y Organizacin

Las memorias ROM estn caracterizadas por una cierta capacidad, que se mide en bits ( Kilobits Megabits) y una determinada organizacin, que se expresa en cantidad de palabras de tantos bits. Ejemplos: - ROM de 8 Kbits, con organizacin de 1Kx8 (1 Kilo palabras de 8 bits) - ROM de 8 Kbits, con organizacin de 4Kx2 (4 Kilo palabras de 2 bits) - ROM de 1 Kbits, con organizacin de 1Kx1 (1 Kilo palabras de 1 bit)

6.6

Arreglos de Memorias

Las memorias se utilizan en combinaciones (arreglos) normalmente denominados "bancos de memoria". Estos bancos permiten la construccin de memorias del tamao requerido por el sistema en base a circuitos integrados disponibles (es habitual que se requiera ms memoria de la que puede suministrar un nico circuito integrado, o que el tamao de palabra necesario sea otro). Es de destacar que estas ideas que estamos desarrollando en el contexto de memorias ROM tambin se aplican a otro tipo de memorias (RAM) que veremos en otro captulo y, en particular, a los modulos de memoria (tipo SIMM, DIMM o similar).

Tomado de www.crucial.com

El los prximos diagramas circuitales aparecern las entradas CS y OE. Como ya hemos mencionado el significado y utilizacin de dichas entradas se ver ms adelante en este mismo captulo. Por ahora consideremos que son entradas que existen en todas las ROMs y deben, por tanto, existir en las ROMs "compuestas" que vamos a disear. 6.6.1 Memoria de mayor tamao de Palabra

En este caso el objetivo es lograr una memoria ROM de n bits de salida a partir de memorias de menor cantidad de bits (su tamao de palabra es menor que el requerido). Veamos como se construye un banco as utilizando un ejemplo: supongamos que queremos construir una ROM de 1Kx8 y disponemos solamente de ROMs de 1Kx4. Lo primero es determinar la cantidad de memorias requeridas. En este caso vemos que la memoria solicitada tiene una capacidad de 8 Kbits y las disponibles de 4 Kbits. Esto da que se necesitaran 2. Por otro lado el anlisis de la organizacin solicitada y la disponible, confirma esta cantidad. No es difcil concluir que el circuito de la ROM de 1Kx8 equivalente es el representado por el diagrama esquemtico a continuacin:

6.6.2

Memoria de mayor cantidad de Palabras

En este caso el objetivo es lograr una memoria ROM de m bits de entrada a partir de memorias de menor cantidad de bits de direccin. Veamos como se construye un banco as utilizando un ejemplo: supongamos que queremos

Instituto de Computacin - Facultad de Ingeniera - UDELAR

65

Arquitectura del Computador 1

Notas de Terico

construir una ROM de 2Kx8 y disponemos solamente de ROMs de 1Kx8. Al igual que en caso anterior lo primero es determinar la cantidad de memorias requeridas. En este caso vemos que la memoria solicitada tiene una capacidad de 16 Kbits y las disponibles de 8 Kbits. Esto da que se necesitaran 2 al igual que en el ejemplo anterior. Por otro lado el anlisis de la organizacin solicitada y la disponible, confirma esta cantidad. En el caso anterior cada ROM contribua con una parte de los bits de salida. En este caso cada ROM contribuir con una parte del rango de direcciones. La ROM a construir tiene 11 bits de entrada, con un rango de direcciones de 0 a 2047. Cada ROM disponible tiene 10 bits de entrada, con un rango de direcciones de 0 a 1023. Por tanto cada ROM contribuir con la mitad de las posiciones: una de ellas aportar las posiciones de 0 a 1023 y la otra las posiciones de 1024 a 2047. Para seleccionar qu ROM se conecta a la salida utilizamos multiplexores de 2x1, controlados por el bit ms significativo de las entradas de direccin. El circuito que implementa este funcionamiento es:

En el siguiente diagrama los multiplexores se han explicitado en sus equivalentes AND y OR (se ha omitido la repeticin de la estructura de compuertas de forma de no sobrecargar el dibujo):

Instituto de Computacin - Facultad de Ingeniera - UDELAR

66

Arquitectura del Computador 1

Notas de Terico

6.7

Chip Select

La entrada CS (Chip Select) permite ahorrar en la implementacin la estructura de ANDs que estamos colocando a la salida de las ROMs para elegir cual de ellas conecta a la salida en funcin del bit ms significativo de la direccin. En otras palabras las compuertas ANDs estn incluidas dentro del chip de la ROM y el selector es la entrada CS. Si CS = 0 todas las salidas de la ROM estn en 0, con independencia de las entradas de direccin y del "valor" almacenado en la "posicin" de la ROM indicada por dicha direccin y si CS = 1 las salidas presentan el contenido de la ROM en la posicin sealada por la direccin. En las ROMs ms modernas la entrada CS en 0 tiene un efecto un poco distinto por el cual el circuito interno de la ROM pasa a un estado de bajo consumo de energa y el estado de sus salidas tiene un comportamiento similar al "tri-state" que veremos en el prximo punto. A los efectos del curso consideraremos que el comportamiento es el primero de los descriptos (las salidas pasan a estado lgico 0).

Instituto de Computacin - Facultad de Ingeniera - UDELAR

67

Arquitectura del Computador 1

Notas de Terico

6.7.1

Aplicacin del Chip Select (CS) a Arreglos de Memorias El circuito de la ROM de 2Kx8 queda simplificado por el uso del CS de esta manera:

6.8

Lgica de Tercer Estado (Tri-state)

En el ejemplo anterior se ve que las ORs que se colocan a la salida en realidad siempre tienen una de sus entradas en 0. Esto es por la forma de funcionamiento del circuito en donde se utilizan como salida lgica de un selector. Dada esa propiedad alguien podra verse tentado de quitar las OR y unir las salidas. Eso desde el punto de vista lgico no es posible porque sera equivalente a igualar dos variables de valor en principio distinto (una de ellas con valor 0 y la otra con 0 1). Desde el punto de vista del circuito provocara un cortocircuito que posiblemente dae las salidas que se unieran de esa forma. Para poder implementar ORs "cableadas" (sin necesidad de utilizar compuertas) se disearon los circuitos de manera que tuvieran salidas con tres estados posibles (en lugar de los 2 estados lgicos habituales): 0, 1 y Z. El estado Z se denomina tambin "tercer estado", "estado de alta impedancia", "estado indiferente" "tri-state". Los circuitos que tienen este tipo de salida disponen tambin de una entrada denominada OE (Output Enable) o similar. Cuando dicha entrada de control est en 0, la salida pasa al "estado de alta impedancia" y cuando la entrada de control est en 1, la salida est en estado lgico 0 1. Un caso tpico de uso de esta tecnologa es en los "buffers", ya sean directos o inversores:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

68

Arquitectura del Computador 1

Notas de Terico

6.8.1

Aplicacin de Lgica Tri-state con Output Enable (OE) a Arreglos de Memorias

Veamos a continuacin como queda del circuito de la ROM de 2Kx8 simplificado por el uso de la lgica de tres estados a travs de la entrada de control OE:

Instituto de Computacin - Facultad de Ingeniera - UDELAR

69