3. 1. La CPU:
El cerebro de la bestia
La
CPU es el motor del ordenador, es la cabeza pensante del cuerpo, en
definitiva es el ordenador.
A
lo largo de la historia de la Informática han sido muchas las CPU’s que
han pasado por los ordenadores, pero al final, en el tema de los
compatibles ha sido la serie X86 la que se ha llevado la palma.
Cuando
IBM se planteó la construcción de su Personal Computer, barajó una
serie de CPU’s que cumplían una serie de requisitos, pero fue el 8086
el elegido para el PC.
El
CPU 8086 fue uno de los primeros CPU’s de 16 Bits que salió al mercado,
y era muy avanzado a su época. Sus principales características son:
-Ancho
de bus de 16 Bits.
-Un
bus de direccionamiento de 20 Bits.
-Alimentación
única a +5V.
-Dos
procesadores independientes en su interior:
Una unidad de comunicación con los buses y una unidad de ejecución
de instrucciones.
-Una
serie de registros de 16 Bits.
Cuando
nos referimos que tiene un bus de direcciones de 20 Bits,
nos referimos a que es capaz de direccionar 220
direcciones, o sea, 1 MB. Ahora
nos parece ridículo, pero en su época era una barbaridad, por lo que
parecía que Intel se había “pasado” en su diseño.
Los
primeros ordenadores basados en 8086, todos ellos de IBM, tenían una
memoria de 64KB. Nos puede
parecer extraño que pudiendo manejar 1MB sólo lo hiciera con 64KB;
debemos tener en cuenta que en aquella época la memoria era muy cara y no
estaba al alcance de todo el mundo, so pena de encarecer el precio final
del ordenador. Además, el software no era tan exigente como el actual.
Los
primeros IBM PC tenían incorporado el BASIC, y como sistema de
almacenamiento de masa tenía un casete.
Posteriormente, se añadió la disquetera. Como sistema operativo, se utilizó el famoso CP/M.
La
evolución del software hizo que pronto se quedara corta la memoria.
Se hicieron ampliaciones a 128Kbytes, 256Kbytes, 512Kbytes y
640KBytes, que sólo podían pagar unos pocos.
El
aumento de memoria provocó determinadas incompatibilidades, que quedaron
subsanadas con un ingenioso sistema denominado segmentación, que será
explicado más adelante.
De
todas formas, los primitivos PC’s eran muy caros. Es por ello por lo que IBM encargó a Intel un CPU compatible
con el 8086 pero de menor precio, de manera que se
diseñó un CPU idéntico al 8086 pero con un bus de datos de sólo
8 Bits, denominada 8088. Pronto
se hizo muy popular, puesto que por su menor precio, el PC fue más económico.
Las
CPU’s 8086 y 8088 funcionaban a una velocidad de reloj de 4,77 MHz,
siendo por tanto de las más rápidas que había en su época. Además, surgió una gran cantidad de chips que acompañaban
a los CPU’spara diversas funciones: generador de reloj, control de
entradas/salidas, buffers, etc.
Sin
embargo, los 8086/8088 tenían poca facilidad para el cálculo matemático
complejo, de manera que hubo que diseñar un chip específico para dichas
operaciones. A este chip se
le denominó coprocesador matemático y su nombre fue 8087.
¿Qué
es un coprocesador matemático? Como
su nombre indica, es un chip destinado única y exclusivamente a
operaciones matemáticas complejas, tales como senos, cosenos, potenciación,
exponenciación, etc. Este
chip va conectado al CPU mediante los buses de datos y direcciones.
¿Cómo
funciona un coprocesador? Supongamos
que estamos ejecutando un programa que necesita de un cálculo matemático
complejo. Es necesario que el
programa haya sido creado pensando en la posibilidad de utilizar un
coprocesador. Este punto es
imprescindible, ya que el objeto del coprocesador es asistir a la CPU en
operaciones que por sí sola no es capaz de hacer.
Si el “copro” no estuviera, el programa no debe funcionar.
En
ese momento, el programa intenta ejecutar la orden compleja, y el CPU
automáticamente deja de atender al programa, dándole paso al
coprocesador. Este ejecuta la
instrucción y cuando termina, da paso otra vez al CPU, desconectándose. Huelga decir que el “copro” pasa al CPU los resultados.
El
uso del coprocesador permitió ejecutar programas complejos de diseño y cálculo,
pero con el poco rendimiento del 8086/8088 no se aprovechó bien, de
manera que hubo que pensar una manera de mejorar los PC´s. La solución se llamó 80286.
3. 2. La siguiente generación, el 80286
La
verdad es que la serie 8086/8088 tenía poca potencia de cálculo, sobre
todo debido a su baja velocidad de proceso, que ya sabemos era de 4,77 MHz.
Es por eso por lo que Intel siguió investigando en el mundo de los
procesadores, presentando en sociedad al 80186/80188.
Estos
CPU’s estaban optimizados en el tiempo de ejecución de las
instrucciones, es decir, que la ejecución de una instrucción determinada
ocupaba menos ciclos de reloj, de forma que el programa se ejecutaba más
rápido.
De
todas formas, estos microprocesadores apenas se vieron, debido a la
aparición de un CPU que revolucionó el mercado de los ordenadores
personales de la época, me refiero a la auténtica estrella de la casa:
El 80286.
El
286 era un CPU pensado por y para la multitarea, debido a una serie de
características internas que lo hacían idóneo para ello.
En primer lugar, era más rápido que sus antecesores, y no sólo
en tiempo de ejecución de
instrucciones, sino también en el reloj del sistema.
Los 286 comenzaron a verse a velocidades de reloj de 6, 8, 12, 16 y
20MHz.
Hay
que hacer notar que los CPU’s a 16 y 20MHz no los fabricaba Intel:
Por aquel entonces comenzaba a despuntar la casa AMD, la cual ha
dado al mundo versiones muy buenas de los CPU’s de Intel.
Debemos recordar al lector que Intel no había terminado de atar
los cabos de las patentes, de manera que cualquiera podía basarse en sus
diseños para crear un CPU.
También
entró en escena otro fabricante: HARRIS.
Si bien las CPU’s de Harris eran las más rápidas que jamás se
habían visto, (¡20 MHz!), también
es
cierto que quiso incorporar ciertas mejoras al 286 que provocaron una
serie de problemas de compatibilidad con el software, de manera que los
CPU’s de Harris siempre tuvieron fama de ser problemáticos.
Las
características del 286 eran:
-Bus
de datos de 16Bits.
-Direccionamiento
ampliado de 24Bits.
-Optimización
del tiempo de ejecución de instrucciones.
-Dos
modos de trabajo: Real y Protegido.
Con
24Bits de bus de direcciones, el 286 permitía la ampliación de memoria
hasta valores inimaginados: 16MB
de RAM.
A
pesar de esto, era raro el 286 que tenía más de 4MB de RAM, pues el
precio de la memoria en aquellos tiempos era muy caro:
Llegó a ser de hasta 10.000 Ptas el MB.
Antes
hemos dicho que el 286 tenía dos modos de trabajo: Real y Protegido.
El modo real de trabajo es el estándar del 8088/8086, con la
limitación de 1MB de RAM. Este
modo se implantó para tener la compatibilidad con los sistemas antiguos.
El
modo Protegido se implantó para la integración del 286 en los sistemas
multiusuario y multiprocesador de aquella época, que eran las primitivas
versiones de OS/2 y UNIX.
En este modo se pueden utilizar la máxima memoria de la que se
disponga, mediante la carga de un driver en el CONFIG.SYS de la máquina,
ya sea en MS-DOS ó DR-DOS.
Para
conseguir la “multitarea” de los sistemas anteriormente reseñados, al
286 “no se le puede dejar
solo” con la memoria. Es
por ello por lo que el 286 incorpora una especie de “coprocesador”
encargado de las colas de instrucciones y el manejo de la memoria,
conceptos estos que provocan una especie de “modo de supervisión” del
trabajo realizado, concepto ya desarrollado por Motorola en su serie
68000.
Sin
embargo, con el 286 comenzaron los errores de Intel, ya que había un
error en el modo de trabajo virtual:
En determinadas circunstancias, no se podía volver al modo real,
quedando el ordenador colgado. Este
fue uno de las motivos que impidió el avance del DOS.
Por aquella época, se
estaba preparando la versión 4.0 del MS-DOS.
Esta versión incluía una serie de órdenes que permitían el
trabajo en modo protegido en DOS, lo cual hubiera acabado en posteriores
versiones en una especie de DOS multitarea.
Lamentablemente, el fallo del 286 truncó esa esperanza, de manera
que el MS-DOS 4.0 acabó con una serie de funciones y órdenes que no están
documentadas en ningún sitio para que no se usen, que utilizaban las
prestaciones avanzadas del 286.
Esto
hubiera supuesto la muerte de la compatibilidad, ya que también se habría
acabado con la barrera de los 640KB.
Aún así, como opinión personal, creo que al final hubiera sido
mejor para todos.
Por
supuesto, también apareció el coprocesador de turno, denominado 80287,
con una serie de mejoras en el cálculo y en velocidad de ejecución.
Sin
embargo, no se siguió investigando para aumentar las prestaciones del
286, ya que estaba a punto de aparecer el CPU que marcó la revolución:
El 80386.