martes, 27 de marzo de 2012

1.2 TIPOS DE ARQUITECTURAS Y EVOLUCION DEL CPU

Tipos de arquitecturas.

ARQUITECTURAS CISC
La microprogramación es una característica importante y esencial de casi todas las arquítecturas CISC.
Como por ejemplo:
Intel 8086, 8088, 80286, 80386, 80486.
Motorola 68000, 68010, 68020, 68030, 6840.

La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador.
En la década de los sesentas la micropramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones.
Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción).

ARQUITECTURAS RISC
Buscando aumentar la velocidad del procesamiento se descubrió en base a experimentos que, con una determinada arquitectura de base, la ejecución de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser mas eficientes, gracias a que el tiempo de acceso de las memorias se fue decrementando conforme se mejoraba su tecnología de encapsulado.
Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones complejas.
En investigaciones hechas a mediados de la década de los setentas, con respecto a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución, se observó lo siguiente:
- Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución de un programa.
- Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecución más cortos.
Las características esenciales de una arquitectura RISC pueden resumirse como sigue:
Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann.
Las instrucciones, aunque con otras características, siguen divididas en tres grupos:
a) Transferencia.
b) Operaciones.
c) Control de flujo.

Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador.
Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior.
El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales:
Unidad para el procesamiento aritmético de punto flotante.
Unidad de administración de memoria.
Funciones de control de memoria cache.
Implantación de un conjunto de registros múltiples.
La relativa sencillez de la arquitectura de los procesadores RISC conduce a ciclos de diseño más cortos cuando se desarrollan nuevas versiones, lo que posibilita siempre la aplicación de las más recientes tecnologías de semiconductores. Por ello, los procesadores RISC no solo tienden a ofrecer una capacidad de procesamiento del sistema de 2 a 4 veces mayor, sino que los saltos de capacidad que se producen de generación en generación son mucho mayores que en los CISC.
Por otra parte, es necesario considerar también que:
La disponibilidad de memorias grandes, baratas y con tiempos de acceso menores de 60 ns en tecnologías CMOS.
Módulos SRAM (Memoria de acceso aleatorio estática) para memorias cache con tiempos de acceso menores a los 15 ns.
Tecnologías de encapsulado que permiten realizar más de 120 terminales.
Esto ha hecho cambiar, en la segunda mitad de la década de los ochentas, esencialmente las condiciones técnicas para arquítecturas RISC.

Evolucion del CPU.

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.
-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.

No hay comentarios:

Publicar un comentario