Nota Bene: All that wanders is not lost.

ARQUITECTURA DE UNA COMPUTADORA

Un curso de Programación es punto de unión entre muchas asignaturas, y en especial las de matemáticas, a las que da "vida" por cuanto los conocimientos matemáticos adquiridos son los que permiten crear programas que describan situaciones de la vida real. Estas últimas suelen admitir descripciones en términos de bases de datos, y también se tratará el tema en esta asignatura. Estos dos tipos de aplicaciones, junto con las pequeñas complejidades sintácticas, implican que las asignaturas de Programación son inasequibles a los esfuerzos memorísticos "de fuerza bruta". En efecto, de nada servirá aprende un programa de memoria (!?): solo es preciso recordar unas pocas reglas sintácticas, aprender unos cuantos algoritmos y razonar con calma.

El raciocinio (o dicho de otro modo, dar vueltas al asunto) es la clave de esta asignatura.

Por así decir, la memoria proporciona los bloques de construcción (los "ladrillos") pero es el raciocinio el hace las veces de arquitecto. La memoria es la encargada de aprender las reglas de sintaxis y los principales algoritmos, pero el verdadero trabajo comienza al ensamblar estos elementos.

Una definición .- Una computadora es una colección de dispositivos (principalmente electromagnéticos y de estado sólido) destinados al tratamiento (almacenamiento, procesado y recuperación) de información. Desde un punto de vista más próximo a la programación, una computadora es un autómata dotado de memoria en la que se almacenan datos e instrucciones, con la capacidad de ejecutar esas intrucciones (el programa) y producir nuevos datos (los resultados del programa, que también se almacenan en la misma computadora o quizá en otra).

Partes de una computadora


Estas partes están enlazadas mediante distintos tipos de bus (serie, paralelo). El lector interesado hallará una enorme cantidad de información en Internet. Por ejemplo, esta página muestra un diccionario informático, y también esta .

Nota.- El idioma mayoritario de Internet es el Inglés. Por tanto, las búsquedas que más éxito pueden tener son las de términos escritos en este idioma. La distribución de páginas por idiomas es objeto de controversia, y resulta muy difícil y costosa de estudiar.

El lector interesado en obtener una descripción razonablemente detallada del funcionamiento de un ordenador personal puede consultar, por ejemplo, esta página. Resulta muy recomendable imprimirla.








Unidad central de proceso
La unidad central de proceso, núcleo del ordenador, es un dispositivo basado en la realización de operaciones lógicas (conjunción, disyunción, negación, etc) como las que se han estudiado en Lógica Matemática o en Arquitectura de Computadores. ¿Cómo se pasa de estas sencillas operaciones lógicas a los complejos cálculos que efectúa la computadora? El procesador, basado ciertamente en elementos lógicos sencillos, contiene un enorme número de estos, dispuestos de tal modo que reproducen el comportamiento de operaciones mucho más complejas. Por ejemplo, las operaciones aritméticas habituales (suma, resta, multiplicación) se realizan mediante circuitos complejos basados en los sencillos dispositivos AND, OR, NOT, etc, que se han mencionado. Se dice entonces que el procesador es capaz de llevar a cabo muchas instrucciones (tantas como se puedan realizar mediante los circuitos lógicos complejos de que consta).

La ejecución de un programa se es la repetición de un ciclo como el siguiente:
En los procesadores actuales, estas fases están a su vez descompuestas en otras, y todas ellas se ejecutan en paralelo, de tal modo que el procesador puede estar simultáneamente buscando una instrucción, decodificando otra, buscando los operandos de una tercera y ejecutando una cuarta. De este modo todas las tareas se realizan a la vez y se acelera la ejecución del programa.

Las instrucciones del procesador tienen un "nombre", que ciertamente no reconocería un ser humano sin instrumentos: se trata de una colección de tensiones que se aplican en los terminales de entrada del procesador, y representan una trama o colección de bits que está asociada a la instrucción deseada. Los nombres de las instrucciones son importantes porque un programa es una colección de instrucciones que escribe un operador humano; la labor del programador será más sencilla si las instrucciones tienen nombres razonables. El complejo proceso que se produce desde el momento de pulsar la tecla INTRO hasta la ejecución del programa correspondiente queda fuera del alcance de este texto.

top Subsistema de Memoria de Proceso o RAM y memoria inerte o ROM
Como se ha visto, un procesador es un autómata que se limita a tomar instrucciones y procesarlas. Estas instrucciones residen en otra zona de la computadora, denominada RAM (Random Acces Memory). El sistema de memoria RAM es relativamente sencillo; se limita a admitir información para su almacenamiento y a proporcionar la información que se le solicita. Toda la información del sistema de memoria tiene formato binario. El sistema tiene tres buses lógicos, que quizá sean solamente dos buses físicos: el bus de datos, el bus de direcciones y el bus de control. El bus de datos sirve para llevar información al sistema de memoria y también para extraer información del mismo. El bus de direcciones especifica qué posición de memoria se desea (tanto para leer como para escribir). El bus de control especifica si se desea leer o escribir. Por ejemplo, si el procesador desea tomar una instrucción de RAM, primero pone en el bus de direcciones la posición en que se encuentra la instrución, y después activa el modo de lectura en el bus de control. Al cabo de un cierto tiempo, la información aparece en el bus de datos y el procesador la recibe.
La cantidad de información que se lee o escribe en el sistema de memoria tiene un impacto crucial sobre el rendimiento del procesador. En la actualidad, los buses de datos son de 32 o 64 bits, y existen máquinas de ancho de bus más elevado.
Otro factor limitante del bus de memoria es la frecuencia con que permite enviar o recibir datos: cuanto más elevada sea esta, mayor será la cantidad de información aportada al procesador y devuelta por este. En la actualidad, los procesadores son mucho más rápidos que el sistema de memoria (el ancho de banda del bus de datos de un procesador es mucho mayor que el ancho de banda del sistema de memoria), lo cual hace recomendable utilizar una memoria cache o de reserva, que se intercala entre el procesador y el sistema de memoria. El lector interesado hallará información interesante aquí . Un último detalle: el contenido del subsistema de RAM es volátil, esto es, pierde su contenido (en general) al desconectar la alimentación. Esto hace necesario que el ordenador disponga de información almacenada en ROM (Read-only Memory), caracterizada por ser algo más lenta que la pero permanente, esto es, que su contenido no se pierde al desconectar la alimentación. El contenido de la ROM no es modificable, aunque las computadoras actuales emplean memorias PROM, de contenido actualizable aunque excesivamente lento para su uso como memoria de proceso.
El relativamente alto coste de la memoria RAM y ROM exige el uso de dispositivos de almacenamiento masivo, normalmente magnéticos, ópticos o magnetoópticos, para almacenar las instrucciones (programas) y datos procesados y producidos por la UCP. Los programas, residentes normalmente en disco, se cargan en RAM para su ejecución; los resultados se almacenan también en RAM para su posterior almacenamiento en disco. Esto supone que la "potencia" de un ordenador dependa directamente de la cantidad de RAM de que disponga. La memoria RAM suele ser de algunos centenares de megabytes, o gigabytes en modelos más recientes.

top Subsistema de almacenamiento masivo (disco)
El subsistema de disco [Véase la relación de enlaces que hay al final de esta página ] de un ordenador es un dispositivo electromagnético en el cual se almacena información en forma de dominios magnetizados que se crean en una película depositada sobre la superficie de un plato metálico (de aluminio en muchos casos). El disco gira rápidamente (hay unidades que funcionan a 15.000 rpm) y la información se lee y escribe mediante bobinas situadas en el extremo de un brazo articulado, que se desplaza sobre la superficie en rotación sin tocarla. El brazo es capaz de desplazar radialmente la bobina sobre el disco; de este modo, se puede al contenido de las pistas (finísimas coronas circulares) en que se divide la superficie. Normalmente, un "disco" consta realmente de varios platos, cada uno de los cuales contiene una parte de la información leída o escrita, aunque a efectos del ordenador el sistema se comporta como si se tratase de un único elemento
El subsistema de disco es varios ordenes de magnitud más lento que el subsistema de RAM, lo cual hace inviable utilizarlo como elemento de proceso (esto es, si se intentase ejecutar un programa desde disco, sin cargarlo en RAM, el resultado sería un rendimiento completamente inadmisible). La capacidad capacidad se mide actualmente en gigabytes o terabytes, y la velocidad [ 1 ] [ 2 ] de transmisión de información está en la banda de las decenas de megabytes por segundo en el mejor de los casos (excepción hecha de ciertos equipos dotados de RAID o de interfaces especiales como SCSI).
Evidentemente, cuanto mayor sea la velocidad del subsistema de disco, menos tiempo será necesario para cargar los programas y datos en RAM: los programas arrancarán antes y se leerán los datos en menos tiempo, lo cual significa una mayor velocidad para todo el proceso. Recuérdese que un sistema no es tan bueno como el mejor de sus componentes, sino tan malo como el peor.


top Periféricos:
El procesador, según lo expuesto, utiliza tensiones eléctricas como señales de proceso. Estas señales son de unos pocos voltios, y su duración es extremadamente pequeña (nanosegundos). Pero la información útil para los seres humanos debe mostrarse a través de una pantalla, o debe insertarse a través de un teclado. Estos elementos, que se denominan dispositivos periféricos, efectúan la traducción adecuada entre las señales eléctricas del ordenador y los distintos tipos de señales (ópticas, acústicas) que utilizan los seres humanos. En general, los periféricos son traductores del formato de señal; téngase en cuenta que la transmisión de información requiere el uso de señales (eléctricas en muchos casos) de muy distintos tipos. El lector interesado encontrá aquí más información.