las computadoras?
RESUMEN PRIMERA PARTE
Índice
Conceptos Básicos .............................................................................................................................. 2
La Maquina ...................................................................................................................................... 2
La operación más simple ................................................................................................................. 2
La suma ............................................................................................................................................ 4
Las complicaciones de un signo ...................................................................................................... 7
Algunos otros detalles ..................................................................................................................... 7
El problema del ordenamiento ........................................................................................................ 8
El concepto de memoria .................................................................................................................. 8
Conceptos Básicos
La maquina
Maquina: Conjunto de instrumentos combinados que reciben una cierta energía definida para
transformarla y restituirla en forma más apropiada o para producir efectos determinados.
La computadora es una maquina automática, que imita procesos intelectuales del ser humano con
una eficacia y rapidez muy elevados, que además de todo ello es reprogramable; además, pueden
existir en conjunto.
La computadora es una maquina secuencial que recorre una secuencia de estados definidos por su
programa. Y aunque las computadoras con capacidad de procesamiento paralelo son capaces de
ejecutar más de una tarea a la vez, esta aseveración sigue siendo correcta, con la diferencia de que
cada estado está determinado por la ejecución de un conjunto de acciones.
Por otra parte, el movimiento debe estar claramente definido, esto es, el autómata requiere una
descripción de lo que debe hacer.
Si tenemos una sola variable, resulta que cualquier operación que queramos definir solamente
podrá alterar el valor de la variable de 0 a 1, o viceversa.
𝑦 = 𝑥̅
Del principio de doble negación se desprende inmediatamente que:
𝑦̅ = 𝑥̿ = 𝑥
Para una sola variable se puede definir una sola operación. Supongase que tenemos que decidir si
vamos, o no, al cine, y que la cuestión depende de dos variables: tenemos, o no tenemos, el dinero
y la película es, o no, interesante. Podemos tabular la decisión anterior.
a b y
0 0 0
0 1 0
1 0 0
1 1 1
George Boole demostró que la operación lógica AND no puede ser reducida a ningún conjunto de
operaciones mas sencillas y, por lo tanto, constituye una operación lógica elemental. Por otra
parte, ya vimos que existe por lo menos una forma muy sencilla de realizar físicamente esta
operación. Simbólicamente, la operación es 𝒚 = 𝒂 ∗ 𝒃
a b y
0 0 0
0 1 1
1 0 1
1 1 1
Esta tabla corresponde a la operación lógica OR, que puede leerse como “la salida es cierta, si una
o ambas entradas son ciertas”. Una analogía eléctrica seria la conexión en paralelo de dos
apagadores que alimentan a un foco. El foco encenderá si uno, o ambos apagadores están
encendidos. Simbólicamente, la operación es 𝒚 = 𝒂 + 𝒃
Al igual que con la operación lógica AND, esta no puede reducirse a otras más sencillas. La lógica
simbólica requiere que ambas operaciones elementales puedan relacionarse, esto es, que una
pueda ser expresada en términos de la otra y viceversa. La prueba de que esto es así, se conoce
como el teorema de Morgan.
𝒁 = ̅̅̅̅̅̅̅
̅+𝒃
𝒂 ̅ = 𝒂𝒃
Todas las operaciones concebibles en el marco de la lógica simbólica pueden ser realizadas por
medio de una combinación adecuada de cualquiera de las dos operaciones, así como de la
negación.
La suma
Si tenemos dos variables booleanas, la suma aritmética de estas variables daría los siguientes
resultados:
a b y
0 0 0
0 1 1
1 0 1
1 1 0
El resultado de sumar uno más uno, no es representable en términos de una sola variable: sus dos
valores posibles, 0 y 1, ya los hemos usado, y el numero dos requiere de otra representación.
Esto es análogo a lo que ocurre cuando sumamos 5 + 7; el resultado no puede ser representado
con un solo digito, y utilizamos el recurso de definir una segunda propiedad de os números: su
valor posicional. Con esta convención, 5 + 7 = 12, se interpreta como “uno por 10 más dos”.
Decimos que se produjo un desborde en la suma, o un “acarreo”. Una computadora representa a
los números positivos en forma análoga. Asignamos un valor posicional a cada variable booleana,
donde cada posición representa un factor de dos. Así la secuencia 0, 1, 2, 3, 4, 5, … toma la forma
0, 1, 10, 11, 100, 101, …
Cualquier número (real, entero y positivo), puede ser representado por una secuencia de variables
booleanas, donde cada una posee su valor numérico, esto es, uno o cero, y su valor posicional,
esto es, 20 , 21 , 22 , 𝑒𝑡𝑐 −. Lo cual es una representación numérica base 2.
Cuando sumamos dos dígitos de una suma de números de varios dígitos, preguntamos si
“llevamos uno”, de una suma anterior. Por ejemplo, 15 + 9 = 5 + 9 igual a 4, llevamos una, y 1 + 1 =
2, más una que llevamos, tres: 34. En general, entonces, para la suma de dos dígitos intervienen
tres entradas: las dos de los dígitos, más el acarreo de entrada. El resultado, también en general,
tiene dos salidas: el resultado, más el acarreo de salida.
Esta máquina funciona para cualquier base numérica, y la tabla de verdad para las dos variables de
salida queda como sigue:
a b 𝒄𝒆 s 𝒄𝒔
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
1 1 0 0 1
0 0 1 1 0
1 0 1 0 1
0 1 1 0 1
1 1 1 1 1
̅
̅∗𝒃+𝒂∗ 𝒃
𝑺= 𝒂
Se puede crear una maquina sumadora de tres variables booleanas, pero esto no es demasiado
útil en la vida real; se requieren sumar cantidades mucho más grandes. Una posible solución
consiste en concatenar una serie de sumadores completos de dos variables.
La entrada de acarreo menos significativa siempre recibe un cero lógico (para la suma del primer
digito no necesitamos el acarreo), y la salida de acarreo de una etapa se conecta a la entrada de la
siguiente. Este esquema nos permite sumar dos cantidades de tres variables booleanas cada una,
esto es, dos cantidades entre 0 y 7 representadas por las variables de salida, así como por el
acarreo de salida. Evidentemente es posible construir un esquema que permite sumar dos
¿Cuál es el tiempo (conceptualmente hablando) mínimo para realizar una operación? En nuestro
caso, dado el tiempo para ejecutar una operación elemental como la unida, ¿Cuál es el tiempo
mínimo para ejecutar una suma sobre dos palabras de n bits?: sin considerar a la negación, dos
unidades, y no importa la cantidad de bits.
El precio que se paga es, desde luego, una mayor complejidad en la combinación de operaciones
elementales.
¿Cómo podemos sumar cantidades de 32, o más bits?: primero sumamos el digito menos
significativo, luego sumamos el siguiente digito, considerando el acarreo de la suma anterior, y así
sucesivamente. La solución secuencial implica que la maquina debe “recordar” el valor del acarreo
anterior.
Esta solución implica más tiempo de ejecución Si todos los factores son iguales, una máquina de
16 bits se tarda el doble que una de 32 bits para sumar dos cantidades de 32 bits. Pero, en
principio, una máquina de solamente dos bits es perfectamente capaz de sumar, secuencialmente,
dos cantidades arbitrariamente grandes Para el diseño de una máquina, siempre estarán del lado
opuesto de la balanza, la cantidad de componentes requerida y la velocidad de ejecución,
independientemente de la solución tecnológica concreta.
La notación complemento a dos posee algunas propiedades muy interesantes, que podemos
ejemplificar en nuestra acostumbrada notación base 10. Supóngase que deseamos restar 4 de 7,
esto es, queremos obtener 7- 4. En notación complemento a diez, el 7 es 07, donde el 0 indica que
el 7 es positivo. Pero 7 – 4 es igual a escribir 7 +(-4). El “-4” se representa como 100 – 4 = 96,
donde el 9 indica que se trata de un numero negativo. Si ahora sumamos 07 + 96 con un sumador
de dos dígitos, obtenemos 03, que es el resultado correcto. También obtenemos un desborde,
pero no lo necesitamos.
Estos hechos encierran una consecuencia sutil, que limita la precisión de las computadoras. Dada
una base numérica cualquiera, existen cantidades que no se pueden representar de manera
exacta. Por ejemplo, 1/3.
Un conjunto de variables puede ser utilizado para representar letras, por medio de un código
común aceptado por todos los interesados. Actualmente el código más popular, derivado del
teletipo, es el código ASCII Expandido, que utiliza 8 bits para representar cualquier letra, digito,
comando e inclusive algunos caracteres gráficos.
Una computadora puede manejar textos por medio de una representación numérica de las letras y
símbolos involucrados. El problema del ordenamiento, en consecuencia, se convierte en un
problema de ordenamiento numérico.
El concepto de memoria
En términos mecánicos, la memoria es simplemente un registro de algún evento para ser utilizado
en un tiempo futuro. Un papel escrito es una memoria.
Para construir un elemento de memoria con funciones booleanas elementales, se requiere definir
las operaciones NAND y NOR.
a b y
0 0 1
0 1 1
1 0 1
1 1 0
𝒚 = ̅̅̅̅̅̅̅
𝒂∗𝒃
𝑡𝑛 a b q 𝑞̅
0 1 1 0 1
1 1 0 1 0
2 1 1 1 0
El circuito descrito constituye un elemento básico de memoria, conocido como biestable o flip-
flop. Posee dos entradas, ambas activas en cero lógico, una de las cuales asigna el valor 1 a q y la
otra restituye q a 0. En la nomenclatura de la computación, se trata de un flip-flop tipo SR. Existen
otros tipos de flip-flop’s, tales como el tipo T, JK y D.
𝑡𝑛 d clk a b q 𝑞̅
0 0 0 1 1 0 1
1 1 0 1 1 0 1
2 1 1 1 0 1 0
3 1 0 1 1 1 0
4 0 0 1 1 1 0
𝑞𝑛+1 = 𝑑𝑛
Donde el instante n+1 es el posterior al instante de ocurrencia de la señal de reloj clk n.
El concepto instante, en la práctica, y dependiendo de la tecnología y del flip flop, requiere de una
duración mínima. Por otra parte, la señal d debe estar estable un cierto tiempo previo y/o
posterior, a la ocurrencia del reloj. Estos tiempos definen la velocidad máxima de operación del
circuito. Desde el punto de vista conceptual, lo importante es que el reloj separa dos tiempos. El
estado, en el tiempo actual, de la salida q, corresponde al estado de entrada d, en el tiempo
previo.
Los flip flops se encuentran disponibles en la forma de circuitos integrados. A estos dispositivos se
les conoce como registros y cuentan con un número determinado de flip flops en su interior.
Con estos flip flops podemos almacenar variables booleanas. Con registros, podemos almacenar
bytes y palabras. Para lograr almacenar cantidades más grandes de información, se requiere de
algo distinto. Una memoria
Mas memorias
El concepto de memorias es el más general posible, en tanto que no solo es un archivo de
información, sino que su contenido puede ser alterado. Más aún: los cambios de contenido que
deseemos efectuar no están restringidos en ningún sentido. Podemos alterar el contenido de
cualquier dirección, independientemente de la dirección previa seleccionada. Estas memorias se
conocen con las siglas de RAM.
Un tipo de memorias que necesitamos para el diseño de una máquina, son llamadas “memorias de
solo lectura” o ROM. Dispositivos que, como su nombre lo indica, solamente pueden ser leídos,
pero su contenido no puede ser alterado por el usuario. Podríamos ver a este dispositivo como
una serie de registros cuyas entradas están conectadas permanentemente a unos y ceros.
También existen las PROM, o Programmable Read Only Memory. Memorias de lectura sumamente
importantes, no solamente porque permiten almacenar programas en firme, sino porque
permiten la realización de un gran número de funciones booleanas, a muy bajo costo, y
relativamente, a gran velocidad.