III. PRINCIPIOS DE OPERACIÓN DE LAS COMPUTADORAS ACTUALES

COMO ya se discutió anteriormente, en los últimos años la computación ha tenido un desarrollo acelerado y ha contribuido en forma notable a la aparición de nuevas tecnologías y a la organización de la sociedad. Este desarrollo se ha llevado a cabo en un periodo muy corto de tiempo, de manera que la mayor parte de las personas adultas hoy en día, crecieron teniendo poco o nulo contacto con las computadoras, percatándose tiempo después de la gran importancia que éstas tienen, ya que están presentes en casi todos los aspectos de nuestras vidas. Esto ha ocasionado que todo el mundo esté familiarizado con las computadoras, pero que por otro lado, sean pocas las personas que tienen conocimiento de lo que realmente son.

Existe todo un mito acerca de las capacidades de las computadoras, tanto que a menudo se mencionan cosas tan impresionantes como que éstas: "pueden calcular la explosión de una bomba de hidrógeno, analizar las ondas de choque y determinar la intensidad de la radiación resultante; todo ello en relación con las condiciones atmosféricas existentes durante la explosión", o también que "son capaces de predecir los resultados de una elección antes de que se hayan juntado todas las boletas de los votantes", o bien que "pueden determinar las probabilidades de encontrar petróleo en ciertos tipos de subsuelo", 1 etc. Este tipo de aseveraciones reflejan la creencia, bastante generalizada, de que las computadoras son capaces de llevar a cabo cualquier tarea con tan solo "pedírselo".

La validez de esta afirmación depende del significado que se confiera a la palabra "pedir", ya que las computadoras consisten en un complicado conjunto de circuitos electrónicos, el cual es capaz únicamente de llevar a cabo operaciones aritméticas y lógicas, de la manera que más adelante explicaremos. Corresponde al programador dar a la computadora las instrucciones precisas para llevar a cabo un cálculo o seguir un procedimiento. Debido a esto último, tenemos que la solución a un problema dependerá de los modelos o criterios utilizados por el programador para plantearlo. Por lo que los resultados sólo serán correctos en la medida en que el modelo utilizado lo sea.

A continuación diremos, en términos generales, cuáles son los principios que utilizan las computadoras actuales para su funcionamiento y el tipo de operaciones que desempeñan. Esto, con el objeto de posteriormente hablar un poco acerca de los nuevos terrenos que la computación ha empezado a explorar.

CIRCUITERÍA Y PROGRAMAS

La ciencia de la computación tiene que ver con la información: cómo se representa, se procesa, se guarda y se transmite. Para ello se requiere de dos tipos de elementos que se conocen como circuitería y programas. 2 La circuitería está constituida por los elementos físicos de la computadora y de su equipo periférico, como son las impresoras, graficadoras, pantallas (monitores), cintas magnéticas o discos duros para almacenar información, etcétera. La circuitería del procesador central es también conocida con el nombre de arquitectura. Por otro lado, los programas están constituidos por las series de instrucciones que hacen posible el funcionamiento de la computadora.

Estos dos aspectos de las computadoras están estrechamente ligados, y se reflejan el uno en el otro, ya que la estructura de la computadora está diseñada de manera que ésta es capaz de ejecutar cierto tipo de tareas. Esto lo explicaremos a continuación.

La mayoría de las computadoras procesan y almacenan todos los datos y las instrucciones para procesarlos en forma de números binarios. Esto es así debido a que este sistema numeral es el más adecuado para ellas. Lo anterior puede ser fácilmente comprendido si pensamos que para utilizar los números en su forma decimal, las computadoras necesitarían 10 niveles diferentes de voltaje para poder expresar 10 dígitos. Por otro lado, los dígitos binarios 0 y 1 pueden ser representados usando circuitos electrónicos muy simples, que tan solo necesitan ser prendidos o apagados. Como consecuencia, tenemos que la única información que se puede manejar de esta manera se reduce a un "sí" o un "no". Esta cantidad de información es llamada bit, y es la unidad fundamental de todo dato. Las figuras 14 y 15 nos permiten apreciar la forma en que se representan los números en las computadoras digitales.

Pero las computadoras no sólo "representan" números, sino que los procesan de acuerdo con las instrucciones recibidas; además transfieren información de una parte a otra de ellas mismas, y de una máquina a otra (véase la figura 16). Todas las instrucciones que estas máquinas deben ejecutar son resumidas en programas, los cuáles son, en esencia, mensajes escritos de acuerdo con algún código binario. Esto es, el lenguaje de máquina también se expresa en términos de bits.

Figura 14. Este diagrama nos ilustra el procedimiento de divisiones sucesivas, utilizado para cambiar un número de representación decimal a su representación binaria. El número 1 983 está representado por 11110111111, lo cual se obtiene al leer los residuos de las divisiones empezando por el último y teminando con el primero ( o sea de abajo hacia arriba).

Aunque el lenguaje de máquina es el más adecuado para las computadoras, no lo es así para el hombre. Si fuese necesario que nosotros utilizáramos dicho lenguaje para comunicarnos con las máquinas, tendríamos más problemas de los que intentamos resolver. Para dar solución a este problema han sido creados los lenguajes de alto nivel, los cuales consisten en una serie de instrucciones que pueden ser entendidas, y aprendidas, tanto por el hombre como por las máquinas. Dentro de la computadora, estos programas puente, comprensibles para el hombre, son traducidos al lenguaje de máquina por programas llamados compiladores. 3

Figura 15. Esta figura muestra la representación binaria de los 10 dígitos del sistema decimal. Cualquiera de estos números puede ser representado mediante las diferentes combinaciones, abierto o cerrado, de cuatro interruptores.

Figura 16. Transmisión del número 4 utilizando cuatro cables, de acuerdo con la tabla de valores mostrada en la figura anterior.

Se han creado muchos lenguajes de alto nivel. Algunos lenguajes son más fáciles de utilizar para el hombre que otros, o más simples, o más lógicos, o mejor estructurados, o más compactos, o con características más apropiadas para llevar a cabo cierto tipo de trabajo, etcétera, pero todos sirven para el mismo fin: facilitar la comunicación hombre-máquina. Entre los lenguajes más comunes tenemos el FORTRAN, el BASIC, el PASCAL, el "C", etcétera.

Ahora bien, ¿de qué manera se lleva a cabo el procesamiento de la información?, ¿cómo puede un conjunto de interruptores llevar a cabo operaciones matemáticas y procesar información tan compleja para así contribuir a predecir, por ejemplo, los resultados de una explosión? La respuesta a estas preguntas está en la adaptación a las computadoras de un álgebra especial, llamada álgebra booleana, la cual fue creada a finales del siglo pasado con el objeto de hacer deducciones lógicas utilizando para ello el lenguaje de las matemáticas. A continuación daremos una breve explicación de los principios básicos del álgebra booleana y de su aplicación en las computadoras.

ÁLGEBRA BOOLEANA

Y CIRCUITOS LÓGICOS

En 1847, un matemático inglés llamado Georg Boole publicó un ensayo acerca del análisis matemático de la lógica. En este documento estableció un conjunto de axiomas a partir de los cuales pueden deducirse afirmaciones lógicas más complicadas. Lo interesante del método por él introducido es la herramienta utilizada para llevar a cabo las deducciones: el álgebra. Esto es, las proposiciones son escritas en términos algebraicos mediante el uso de símbolos que representan ideas, y se llega a las deducciones por medio de operaciones algebraicas.

En otras palabras, esta álgebra nos permite inferir, a partir de un conjunto de premisas, cuáles son las conclusiones a las que se puede llegar de una manera lógica. Y dado que una conclusión puede ser verdadera o falsa (2 estados), esta álgebra puede representarse mediante el uso de interruptores.

El álgebra booleana está basada en los siguientes principios: i) cualquier proposición única, simple o compleja, es llamada variable y está representada por una letra del alfabeto; ii) existen ciertos símbolos que muestran las relaciones entre las proposiciones; y iii) estas relaciones pueden expresarse matemáticamente. A continuación explicaremos estos principios con algunos ejemplos:

Las proposiciones A, B, C y D pueden significar respectivamente: "mayor de 60 años", "más de veinticinco años de servicio", "jubilación" y "jubilación con salario completo". Por otro lado, las relaciones básicas entre las proposiciones son las siguientes: "OR" (O no exclusiva), "AND" (Y) y "NO" (NO).9 Estas relaciones se ilustran a continuación.

A y B son dos afirmaciones independientes, entonces tenemos que la afirmación conjunta

"A OR B"                         (se denota A + B).

será verdadera si al menos una de las afirmaciones es verdadera. Esto es, la afirmación A + B = C será verdadera si se trata de una persona ya sea mayor de 60 años o con 25 años de servicio. Por otro lado, si se trata de una persona que además de ser menor de 60 años, tiene menos de 25 años trabajando, entonces la afirmación será falsa (se trata de "OR" no exclusiva).

Ahora consideremos la afirmación conjunta

"A AND B"                         (se denota A · B)

Para que la afirmación A · B = D sea verdadera, será necesario que la persona cumpla con ambos requisitos para obtener la jubilación con salario íntegro; esto es, deberá ser mayor de 60 y con más de 25 años de trabajo. Si alguna de las afirmaciones, o ambas, son falsas, entonces la proposición "A AND B" será falsa.

Finalmente, la afirmación

"NO A"                         (se denota )

será cierta únicamente si la persona en cuestión es menor de 60 años.

Pueden hacerse combinaciones más elaboradas de premisas, a partir de las relaciones básicas; así como también es posible escribir una misma relación de maneras diferentes. Por ejemplo:

B A= A + B

significa: tener a "todos los que tienen más de 60 años de edad o que tienen más de 25 años de antigüedad" es lo mismo que tener a todos los que son mayores de 60 años o que además de ser menores de 60 años tienen más de 25 años de antigüedad. Nótese que aun con relaciones muy simples como ésta se vuelve difícil traducirlas al lenguaje común, y más aún, efectuar deducciones. Esto nos muestra que una de las grandes ventajas de reducir operaciones lógicas a términos de operaciones matemáticas es que, a diferencia del lenguaje común, las matemáticas no tienen ambigüedades. La figura 17 nos muestra un resumen de las leyes del álgebra booleana, las cuales nos son útiles para simplificar expresiones.

Para utilizar el álgebra booleana en la computadora, se le asigna el valor "1" a la palabra VERDADERO, y el valor 0 a FALSO, o "prendido" y "apagado", respectivamente, y se construyen circuitos electrónicos dentro de la computadora, que se comportan al igual que estas funciones lógicas. Éstos son los llamados circuitos lógicos 4 (véase la figura 18). De esta manera, cuando la computadora ejecuta un programa, envía la información a los circuitos compatibles con el tipo de operación que se desea efectuar. Por otro lado, las figuras 19 y 20 muestran los símbolos convencionales y las tablas de verdad para algunos circuitos simples.

Por supuesto, no es necesario construir un circuito especial para cada problema que deseamos resolver, ya que cualquier problema expresable en términos matemáticos, por complicado que sea, puede realizarse por partes en las diferentes unidades encargadas de efectuar operaciones. Dentro del cerebro central de una computadora existe un gran número de circuitos lógicos, algunos de ellos de gran complejidad; cada uno de estos circuitos ha sido diseñado para llevar a cabo cierta operación lógica específica, dependiendo de su arquitectura (Figura 21). Es papel del procesador central el controlar cómo y cuándo deben efectuarse las operaciones, y transferir los datos e instrucciones a las unidades encargadas de llevarlas a cabo.

Absorción :

A + ( A + B ) = A

A · ( A + B ) = A

Distribución :

A · ( B + C ) = ( A · B ) + ( A · C )

A + ( B · C ) = ( A + B ) · ( A + C )

 

Anulamiento :

A + 1 = 1

A · 0 = 0

 

Doble negación :

= A

Asociación :

( A + B ) + C = A + ( B + C )

( A · B ) · C = A · ( B · C )

Dualidad :

Principio útil ( en realidad no se trata de una regla) :

Y = A · B equivale a = +

Y = A + B equivale a = ·

Conmutación :

A + B = B + A

A · B = B · A

 

Identidad :

A + 0 = A

A · 1 = A

 

Complementos :

A + = 1

A · = 0

Tautología :

A · A = A

A + A = A

 

de De Morgan :

= ·

= +

 

Figura 17. Resumen de las leyes del álgebra booleana.

 

Figura 18. Circuitos que representan funciones lógicas, a) función AND ("Y"): a y B deben estar cerrados para que la corriente circule a través del circuito; esto es, A · B = VERDADERO únicamente si A=VERDADERO y B=VERDADERO; b) función OR ("O") : el circuito quedará cerrado a condición de que la corriente circule, ya sea por A, por B o por ambas, esto es , si A= VERDADERO o B= VERDADERO. Las tablas de verdad para estos dos circuitos se incluyen en la fig. 19.

Figura 19. En esta figura se muestran los símbolos convencionales y tablas de verdad para los circuitos elementales NOT, AND y OR. Las tablas de verdad de un circuito están formadas por las partes de éste ante todas las combinaciones de "FALSO" y "VERDADERO" de las funciones de entrada.

Figura 20. Símbolos convencionales y tablas de verdad para los circuitos compuestos NAND y NOR.

Figura 21. El primer paso para la construcción de un circuito es su diseño.

PRINCIPALES COMPONENTES DE UNA COMPUTADORA

Desde el punto de vista operativo, una computadora electrónica digital puede ser representada esquemáticamente por tres subsistemas. Éstos son: la unidad de entrada y salida de datos, la unidad central de procesamiento y finalmente, lo que nos ocupa en este libro, la memoria.

La unidad de entrada y salida de datos sirve como enlace entre la computadora y el exterior. Como su nombre lo indica, tiene dos funciones: la primera consiste en permitir la entrada de los programas, datos e instrucciones a la computadora, y la segunda es permitir la salida de la información, una vez que ésta ha sido procesada, ya sea hacia el usuario de la máquina, hacia otras computadoras, o hacia algún otro dispositivo.

La unidad central de procesamiento es el cerebro de la computadora y está encargada de controlar su funcionamiento integral. Esto es, lee los programas de la memoria, transfiere información de una parte a otra de la máquina, lleva a cabo cálculos necesarios y las operaciones requeridas por el programa, y controla los dispositivos asociados con la computadora.

Finalmente, las memorias son dispositivos utilizados para almacenar información en las computadoras, y se denomina memorización al proceso por medio del cual se modifica el la memoria. Esta modificación se lleva a cabo de acuerdo con un código, de manera que el nuevo estado del dispositivo representa la información que ha sido almacenada.

MEMORIAS

Una de las funciones más importantes de las computadoras es el almacenamiento de grandes bancos de datos. Pero las memorias no sirven únicamente para este propósito. Ellas son parte esencial de las computadoras, sin la cual no sería posible el procesamiento de la información, ya que funcionan como gavetas en las cuales se guarda, de una manera ordenada, todo el material mientras éste no es utilizado. Las memorias pueden clasificarse con base en su función o conforme a sus características. De acuerdo con la primera clasificación, se dividen en memoria principal o de trabajo y memoria secundaria o auxiliar.

La memoria principal almacena temporalmente los programas que se están "ejecutando" o están en proceso de hacerlo, así como los datos, antes y después de ser procesados. 5 Esta memoria puede ser complementada con memoria secundaria o auxiliar, generalmente en forma de cinta o discos magnéticos, los cuales se encuentran físicamente fuera de la computadora. Este tipo de memoria puede guardar de manera semipermanente, y por un tiempo indefinido, toda la información que deseemos conservar. Por lo general se utiliza para guardar grandes cantidades de información. La cantidad de información almacenable mediante el uso de memorias auxiliares es prácticamente ilimitada, sin embargo ésta se recupera con mucha lentitud en comparación con la almacenada en la memoria principal.

Por otro lado, de acuerdo con sus características, existen varios tipos de memorias, cada uno de los cuales ofrece ventajas y desventajas frente a los otros, por lo cual resultan ser más apropiados para una u otra tarea. Generalmente en estas memorias se puede leer y escribir información, aunque hay memorias en las cuales la información almacenada no puede ser alterada, esto es, únicamente puede leerse. Entre las memorias mejor conocidas, se encuentran las memorias de anillos magnéticos, las memorias semiconductoras y las memorias de burbujas magnéticas.

Las memorias de anillos magnéticos están formadas por un arreglo de anillos de ferrita, cada uno de los cuales es magnetizable en una de dos direcciones; de manera que puede representar un bit de información. La figura 22 muestra este tipo de memoria. Por otro lado, las memorias semiconductoras consisten en circuitería integrada a diferentes escalas. Las memorias de muy grande escala de integración son muy compactas, ya que un chip de silicón de medio centímetro de largo puede contener cientos de miles de circuitos microelectrónicos, cada uno de los cuales guarda un dígito binario. Algunas memorias semiconductoras son volátiles, esto es, en cuanto se interrumpe el suministro de energía eléctrica, se borra la información almacenada.

Todas estas memorias guardan la información de una manera conceptualmente igual, aunque técnicamente la forma de construirlas sea diferente. La idea es la siguiente: las memorias están formadas por un gran número de celdas individuales de almacenamiento, cada una de las cuales es capaz de retener un número binario. Estas celdas se agrupan en localidades o palabras, constituidas por un cierto número de celdas básicas; este número varía de una máquina a otra, siendo las palabras de ocho bits (conocidas como bytes) las más comúnmente utilizadas. Por último a cada palabra se le asigna una identificación numérica, o dirección, la cual sirve para señalar la posición de la palabra dentro del dispositivo, para así tener acceso a la información en ella contenida. La capacidad o tamaño típico de las memorias de las computadoras personales de hoy en día es del orden de kilobytes, K, por ejemplo 16k, 32 k, 64 k, etcétera (1 kilobyte es aproximadamente igual a 1 000 bytes)

Figura 22. Memoria de anillos magnéticos. En este tipo de memoria, cada anillo es del tamaño de una cabeza de alfiler, y es capaz de guardar un bit de información. Actualmente, este tipo de memorias ha sido substituido por las memorias semiconductoras.

En el próximo capítulo compararemos esta forma de almacenamiento de información con la que se piensa que utilizan los seres vivos. Ambas formas de almacenamiento son esencialmente diferentes, lo cual se refleja en su eficiencia en el desempeño de diversos tipos de tareas.

Nueva Enciclopedia Temática
Estos dos términos son comúnmente conocidos por sus nombres en inglés hardware y software, respectivamente.
Podríamos decir que una máquina "aprende" un lenguaje de alto nivel si le proporcionan las instrucciones necesarias para traducirlo a su "lenguaje de máquina", esto es, si hace uso de un compilador de dicho lenguaje.
Para nombrar a los circuitos, utilizaremos las expresiones en inglés por ser éstas de uso generalizado.
Cuando un programa se va a "ejecutar", las instrucciones en uso se almacenan en la memoria principal, la cual es de acceso más rápido.