La Anatomía de una Computadora

En los últimos cien años, hemos sido testigos de el rápido advenimiento de la tecnología de cómputo, tan poderosa, novedosa, diseminada e influyente, que muchos autores la consideran como una nueva Revolución Industrial. Sus bases se encuentran en la electrónica, electromagnetismo y óptica, en muchas formas interconectadas: bulbos, transistores, circuitos impresos, communicaciones telefónicas, de radio, radar, telemetría, rayos laser, fibra óptica, circuitos integrados de pequeños semiconductores, de gran integración (LSI), de muy grande integración (VLSI), fotografía, holografía, y muchas más. Cualquier avance en uno de estos dispositivos tiende a generar avances en todos los demás, que se relacionan y combinan para formar una impresionante variedad de lo que conocemos como Computadoras Digitales, o simplemente, computadoras.

Al principio, las computadoras fueron juguetes experimentales de investigadores en las universidades. Después, se convirtieron en herramientas de los gobiernos y grandes corporaciones. Estas computadoras eran enormes, caras, diseñadas y fabricadas individualmente, y al alcance sólo de las mas ricas y poderosas organizaciones. La gente pensaba en el futuro en términos de máquinas cada vez mas grandes, de mayor velocidad y capacidad, que contendrían la información de todo el mundo en enormes bancos de datos. Sin embargo, con el advenimiento de las computadoras de circuito integrado, pequeñas, poderosas, baratas y producidas en masa, la imagen cambió radicalmente. Ahora es posible ver en cualquier lado estas computadoras: relojes de pulsera, microondas, juegos electrónicos, calculadoras de bolsillo, cámaras, máquinas de escribir, instrumentos musicales, y más. Lo que antes se hacía, con pocas opciones y por dispositivos mecánicos intrincados, es ahora realizado con gran flexibilidad, conveniencia y a mucho menor costo por la omnipresente computadora programada. El futuro probable, que tal vez ya está cerca, es que existan millones de pequeñas y poderosas computadoras distribuidas en los hogares, oficinas y fábricas, controlando cualquier máquina o aparato. Todas ellas conectadas en grupos de intrincadas redes, locales o mundiales, comunicándose y compartiendo información, ganando cada vez mayor poder de acción gracias al procesamiento distribuido.

Cada vez mas, nos encontramos con el uso de computadoras en casi cualquier actividad industrial, comercial, bancaria, educativa, científica y de comunicación. Más aun, existe la posibilidad real de contar con poder de cómputo a nivel personal, dada la disminución constante de los costos de las computadoras. Es tal vez considerar la computarización, no como cuestión de "si es posible", sino mas bien de "cuándo y cómo": comprar o rentar equipo, instalar terminales, conectarse a través de una compañía de servicios de red, o instalar una red local; usar programas pre-cargados, comisionar para producir programas, o aprender a escribir los programas nosotros mismos. El asunto es finalmente elegir que incluir y que no para adecuarse a nuestras necesidades de cómputo de entre un ámplio rango de productos disponibles.

La Anatomía de una Computadora

Una computadora es una máquina para el procesamiento de información. Históricamente, esta información era numérica, y las computadoras fueron máquinas para realizar operaciones aritméticas. A diferencia de las simples calculadoras, que solo pueden realizar una operación aritmética a la vez, las computadoras son capaces de realizar operaciones mediante una lista de instrucciones a ejecutar en una secuencia apropiada, sin mayor intervención humana. A esta secuencia de instrucciones se conoce con el nombre de programa.

Una computadora digital almacena su información en forma de palabras, que son conjuntos ordenados y finitos de dígitos binarios o bits. Tales bits son los elementos por los cuales un valor numérico se representa dentro de la computadora. Por consideraciones de simplicidad, confiablidad y economía, las computadoras se diseñan de un gran número de circuitos similares, cada uno de los cuales puede encontrarse en uno de dos estados, que usualmente se denotan como 0 y 1. Una línea de ocho bits se conoce como byte, y la mayoría de las computadoras tienen su información organizada en palabras de uno, dos, cuatro u ocho bytes (8, 16, 32 o 64 bits). El número de bits en una palabra se conoce como longitud; si la longitud es k, entonces el número posible de distintas piezas de información que se pueden almacenar es 2 a la potencia de k. En particular, cuatro bit pueden tener 16 combinaciones diferentes de bits, lo que hace la representación binaria de los números del cero al quince:

0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = 10
1011 = 11
1100 = 12
1101 = 13
1110 = 14
1111 = 15

Se usa una equivalencia de signos en que A = 10, B = 11, C = 12, D = 13, E = 14 y F = 15. Esta equivalencia se hace en base 16 o hexadecimal, que en general es mas intelegible para los seres humanos que largas cadenas de 0's y 1's. Por ejemplo, el valor 10110010 equivale a B2, y 01001100011100101101000110001110 equivale a 4C72D18E.

Comúnmente, una computadora en la actualidad se compone por varias partes, siguiendo un esquema o arquitectura propuesto inicialmente por John Von Neumann, como se muestra en la siguiente figura.

Esencialmente, tales partes son:

  • Unidad Central de Proceso o Procesador (CPU), que es el centro de control y operación de la computadora;

  • Memoria, que almacena tanto datos e instrucciones utilizados por la CPU;

  • Dispositivos de Entrada y Salida, que son una variedad de elementos a través de los cuales la computadora se comunica con el mundo exterior.
La Unidad Central de Proceso (CPU)

El procesador consiste a su vez de una Unidad de Control, una Unidad Aritmética Lógica, y una memoria local de rápido acceso, generalmente representada por un conjunto de registros internos del procesador, como se muestra en la siguiente figura.

Brevemente, el funcionamiento de las partes del procesador es como sigue:

  • La Unidad de Control se encarga de controlar la dirección de la localidad de memoria de la siguiente instrucción a ser ejecutada, y analiza la instrucción en ejecución actual de tal modo que activa las operaciones adecuadas de transferencia de memoria, saltos (mediante apropiadamente cambiar la dirección en memoria de la siguiente instrucción), información de entrada y salida, u operación (realizada por la Unidad Aritmético-Lógica) como lo indique el código de la instrucción actual.

  • La Unidad Aritmético-Lógica realiza las operaciones aritméticas elementales (adición, sustracción, multiplicación y división) y lógicas (AND,OR, NOT y XOR, que operan a los datos considerándolos bit a bit) sobre los datos provistos por la Unidad de Control.

  • La memoria local recibe y almacena los operandos por parte de la Unidad de Control, así como los resultados de las operaciones de la Unidad Aritmético-Lógica. Por ejemplo, la Unidad de Control puede recabar los factores de una multiplicación de la memoria principal, colocarlos en un par de registros de la memoria local, e instruir a la Unidad Aritmético-Lógica para multiplicarlos y poner el resultado en otro registro de la memoria local. En general, este registro se conoce como acumulador. Otros registros de la memoria local se utlizan para conteoso acciones repetitivas, y se les llama registros índice. Otros mantienen valores inmediatos, y se les conoce como buffers. Finalmente, hay registros que reflejan la información relativa al estado de la Unidad de Control, que se les conoce como banderas (flags).

Originalmente, la CPU era una pieza de circuitos electrónicos de tamaño variable, ensamblado a mano y altamente complejo. Con el advenimiento de las técnicas de micro-miniaturización de los circuitos, la impresión y fotografía, así como de la producción en masa de componentes, solo las computadoras mas grandes (llamadas mainframes) se construían en la forma antigua. Los sistemas mas pequeños (microcomputadoras y minicomputadoras) generalmente tienen la CPU completa en un solo circuito integrado.

La Memoria

La memoria consiste de celdas direccionables de componentes electrónicos o magnéticos que almacenan información (tanto datos como instrucciones) necesaria para el funcionamiento de la computadora. Cada celda puede contener una palabra de memoria, que es directamente direccionable por la CPU mediante un número o dirección. Los contenidos de la memoria pueden ser recabados en tiempos relativamente cortos, dependiendo de la frecuencia de operación de la CPU.

Generalmente, la memoria principal o de trabajo, donde se realizan lecturas y escrituras por parte de la CPU, se forma de memoria semiconductora de acceso aleatoria (Random Access Memory o simplemente RAM). Sin embargo, aun cuando la mayoría de los contenidos de la memoria principal pueden ser modificados a voluntad, alguna memoria semiconductora se utiliza para almacenar constantes o programas de utilidad frecuente que no pueden borrarse por la CPU. Tal memoria se conoce como de solo lectura (Read Only Memory o ROM).

Nótese que una computadora con direcciones de un byte de longitud puede tener a lo mas 256 palabras de memoria principal; con dos bytes puede alcanzar hasta 65536 palabras; con tres bytes, 16777216 palabras; y así progresivamente. En la práctica, la mayoría de los sistemas pequeños tienen direcciones de 14 a 18 bits, que les permite direccionar 16384 a 262144 palabras respectivamente. Como estos valores tienden a ser difíciles de recordar, se ha tomado la convención de considerar unidades en base 2 de 1024 palabras con el prefijo kilo (que en realidad denota mil unidades) o de 1048576 con mega (que denota un millón). De este modo, en lugar de escribir 16384 bytes, se presenta como 16 kbytes. Tal vez, el tamaño de memoria más común sea de 64 kbytes (o sea, 65536 bytes).

Como ya se ha mencionado, la memoria principal almacena tanto datos como instrucciones de la computadora. Casi toda instrucción se representa mediante un código de instrucción (operation code o, en breve opcode), en general de un byte de longitud, lo que permite la especificación de 256 operaciones posibles. El propio código de instrucción puede especificar además una referencia a los datos de la instrucción (un número, índice, o dirección) de longitud variable, ya que algunas operaciones requieren más datos que otras.

Además de la memoria principal, una computadora cuenta con almacenamiento en memoria secundaria de tipo magnético u óptico. Tal memoria puede considerarse físicamente como dispositivos de entrada/salida, ya que requiere de dispositivos que se conectan fuera del circuito principal de la computadora. Además, la velocidad de acceso a su contenido es mucho más lenta que aquella entre CPU y memoria principal.

La mayoría de la memoria secundaria es magnética, ya sea a una cinta o a un disco. Funcionan muy parecido a los equipos para grabar sonido, es decir, las cintas y discos están recubiertos de un material magnético que permite borrar, leer y grabar mediante cabezas que contienen sensores o polarizadores electromagnéticos.

Las cintas son los medios magnéticos mas baratos y de mayor capacidad. Pueden tener un buen tiempo de acceso si se considera un acceso de tipo secuencial a su contenido. Sin embargo, su tiempo de acceso para acceso aleatorio es pobre.

Los discos se presentan como la opción cuando se requiere la combinación de una gran capacidad con la relativa economía y velocidad del acceso aleatorio. Los discos de memoria pueden ser de dos tipos: flexibles (floppy disks) o duros (hard disks).

Los discos flexibles son baratos, lentos, y de baja capacidad. Actualmente, su diámetro estándar es de 3.5 pulgadas, y generalmente son removibles de la unidad de disco que los lee o escribe. Esto los hace una "biblioteca" de almacenamiento casi ilimitado (dependiendo de su número). La información se almacena en líneas concéntricas llamadas tracks, en uno o ambos lados del disco. El número de tracks, y el número de bytes por track varía respecto a la densidad de escritura, pero en general, la máxima capacidad de un disco flexible de este tipo es de 1.4 Mbytes. Los discos flexibles típicamente giran a 300 rpm, y su tiempo de acceso depende del tiempo requerido para colocar la cabeza lectora móvil en el track correcto, que es de una fracción de segundo, más el tiempo que le toma a la cabeza encontrar el registro a lo largo de la circunferencia del disco, que aproximadamente toma la quinta parte de un segundo. Por lo tanto, un conjunto de unos miles de bytes consecutivos puede ser accesado en cada segundo.

Un disco duro se contruye de un material rígido, recubierto por una substancia sensible a campos electromagnéticos. Pueden tener diámetros iguales o mayores que los discos flexibles. Se presentan en forma de unidades que pueden contener desde uno a una docena de discos, rotando a una velocidad diez veces mayor que la velocidad de los discos flexibles, lo que hace que el tiempo de acceso a sus registros sea menor. Tienen cabezas magnéticas de lectura y escritura, que pueden ser fijas o móviles. Los discos con cabezas fijas tienen naturalmente una cabeza por cada track, lo que los hace mas costosos, pero ahorran en tiempo de acceso al evitar el movimiento de las cabezas. Los discos con cabezas móviles (conocidos como Winchester) se encuentran sellados para evitar que el mecanismo posicionador de las cabezas se dañe. Las cabezas se mueven muy cercanamente a la superficie del disco, pero permiten una distancia de aire entre ellas y el disco (en los discos flexibles, las cabezas realmente se encuentran en contacto con el disco, lo que tiende a gastarlos). La capacidad de los discos duros es cada vez mayor, y va de varios Mbytes hasta algunos GBytes.

Dispositivos de Entrada/Salida (I/O)

Los dispositivos de entrada/salida son las ligas de la computadora con el mundo exterior. Cada vez más comúnmente, las computadoras interaccionan con sus usuarios en forma representativa mediante terminales. Tales terminales se componen generalmente por un teclado (keyboard) y una pantalla (display).

El teclado es muy parecido a aquél utilizado en las máquinas de escribir. Al presionar una tecla, el teclado enía un código de 8 bits a la computadora. Dado que en general la computadora espera entradas de su(s) terminal(es), al recibir tal código lo interpreta como un dato. Si se encuentra ocupada, el código puede almacenarse en un buffer, para su subsecuente entrada.

La salida principal de la mayoría de las computadoras se representa por la pantalla de video en las terminales. En general, estas pantallas son tubos de rayos catódicos similares a los utilizados en los aparatdos de televisión. De hecho, algunas computadoras sencillas utilizan televisores como su salida principal. Otra salida "visual" que pueden tener las computadoras son las impresoras, que permiten obtener en papel la salida (o impresión) de resultados.

Es común que una computadora esté conectada a varias terminales, todas compitiendo por "lograr" la atención de la computadora. Al hecho de compartir el tiempo de procesamiento de una computadora se le conoce como tiempo compartido (time sharing). Este mecanismo se logra mediante hacer que la computadora cíclicamente se conecte con cada terminal, viéndolas en un tiempo determinado como su única terminal, y dividiendo su tiempo de CPU.

Existen muchos otros dispositivos de entrada y slida, como amplificadores de audio, receptores de video, grabadoras, unidades de discos ópticos, y una variedad de instrumentos científicos, que pueden ser clasificados como transductores (o transducers, que transforman cantidades físicas a pulsos eléctricos), o digitalizadores (o digitalizers, que convierten los pulsos eléctricos en secuencias de ceros y unos). También, tales dispositivos tienen contrapartes de salida, produciendo una cantidad de resultados visibles y audibles, o controlando equipo mecánico o eléctrico. Así, las computadoras pueden dibujar imágenes, producir animaciones, música y otros sonidos, y pueden controlar otros dispositivos como maquinaria para procesos de manufactura.

Para conectar terminales remotas a la computadora, se ha hecho uso de líneas telefónicas; para tal propósito, se emplea un dispositivo de entrada/salida llamado modem (de "MODulador/DEModulador"), que permite la conversión de señales digitales de la computadora a señales telefónicas audibles. Es posible, de este modo, conectar varias terminales remotas o computadoras a otra computadora, lo que forma una "red" (network) de computadoras. Por supuesto, en el caso de una red de computadoras más sofisticada, es posible conectar directamente las computadoras entre si mediante cable, fibra óptica, o enlaces de microondas.

Es de hacer notar que las terminales u otros dispositivos de entrada/salida pueden contener en sí mismos computadoras de varios grados de poder y complejidad, de tal modo que una computadora multiusuario con un CPU central puede verse como una red de computadoras. Las computadoras en terminales o impresoras son frecuentemente llamados procesadores periféricos. De hecho, muchas redes no cuentan con un computador central, sino que son simplemente la conexión de computadoras independientes, ligadas para compartir información, y a veces, capacidades de procesamiento. Es común que permitan el intercambio de mensajes (como el caso del correo electrónico o e-mail), o el acceso a datos (como las bases de datos distribuidas). Es posible que compartan hasta un banco de memoria común, accesible a todos los procesadores. A partir de la invención de las redes de computadoras, se ha investigado la posibilidad de diseñar computadoras hechas a partir de arreglos de procesadores, conocidas como multicomputadoras, procesadores paralelos o distribuidos. Estas ideas tienden a proporcionar un gran poder de cómputo a largo plazo, y probablemente revolucionarán el concepto actual de lo que es una computadora y sus aplicaciones en el futuro.