Volver a la portada de Duiops
Volver al Web de Duiops
 
   
Google
 
En Internet En duiops.net
Menú
Secciones destacadas
Artículos y FAQs
Trucos de Windows
Versiones de Windows
y suites de software
Windows Vista
Windows Media Center
Windows XP
Windows 2000
Windows Millenium
Windows 98/98 SE
Windows 95 OSR-2
Internet Explorer
Office
Otros
Tutorial muy básico
   
Portada

 

Apúntate a la lista de correo del Web de Duiops

Portada - Artículos y FAQs - Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 2)
 
Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 2)

 

Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98

DESDE QUE PULSAMOS EL BOTON DE NUESTRO PC HASTA..... (Parte 2)
----------------------------------------------------

DISPOSITIVOS
------------

Vamos a definir los "dispositivos" como el resto del hardware independiente de la CPU y memoria con los que la CPU interactual.

Hagamos un poco de historia. El PC actual que conocemos, aunque parezca mentira, es basicamente el mismo que surgió en el año 82. Su arquitectura es la misma y lo unico que ha ido evolucionando han sido los "perifericos" o dispositivos. Algunos de ellos, actualmente, se incorporan ya en la placa base (controladores de disco, disquete, puertos serie y paralelo, por poner un ejemplo). Y otra evolucion evidente han sido las CPU, pero recordemos, que por suerte o por desgracia han tenido que mantener su compatibilidad descendente y por tanto, su juego basico de instrucciones es el del antiguo 8086.

Vemos a empezar por la CPU y memoria y luego veremos con detalle el resto de "perifericos". Recordemos que no nos queda más remedio que ceñirnos a la historia. Al año 82.

CPU
---

La primera CPU con una arquitectura de 16 bits que triunfó en el mercado (que conste que no era la unica arquitectura existente en sus años), fué el 8086 de Intel.

Su triunfo, al igual que el del Windows actual, fué una decisión de un gigante del hardware: IBM, y un monton de suerte de una persona que empezaba en aquel momento: Billy Gates.

Hagamos historia. IBM hasta ese momento estaba dedicado a los grandes ordenadores (mainframes) y bajo el supuesto de que empezaba a surgir un mercado potencial (la microinformatica) decidió empezar a dedicarse a este mercado. Para ello encargó a Intel el diseño (mejor dicho, la mejora de un antiguo 8008 - equivalente a un Z80) de un procesador de 16 bits. Y abrió publica subasta (por decirlo de alguna manera), sobre un futuro sistema operativo para dicha arquitectura.

El propio IBM definió las caracterisiticas basicas de las placas madre: el bus PC que rapidamente evoluciocó al bus AT, y que por desgracia todavia seguimos sufriendo.

Con respecto al software, en aquellos años existian unos sistemas operativos serios para los ordenadores de 8 bits que empezaban a surgir. Decimos sistemas operativos "serios" porque realmente lo eran para su epoca. Estamos hablando del CPM cuya propiedad intelectual era de Digital.

En la propia Digital, una vez abierta la "subasta" (y la apuesta) por parte de IBM para el futuro sistema operativo de 16 bits, empezaron a desarrollarse dos proyectos: el CPM 86 (o "concurrent" CPM) y un sistema basado en DOS.

En las fases finales del desarrollo, Digital "apostó" por el CCPM (o CMP 86, o Concurrent CPM, como queramos llamarlo), y abandonó el proyecto basado en el DOS.

Pero Digital era (y sigue siendo) una Empresa "curiosa" con sus ingenieros de Software. El ingeniero de Software tiene la "patente" de lo que desarrolle dentro de la Empresa (esta caracterisitica la hace unica en el mundo del software), y una vez implementado un producto de ingenieria, el equipo, o la persona que lo ha desarrollado percibe "royaltis" por cada venta, al igual que la propia empresa. Y si esta persona se vá de la Empresa, se vá con su "patente" o su "parte de la patente" o sus derechos, y sobre todo si el producto ha sido desechado por la propia empresa se lleva completamente "su" desarrollo y "su" propiedad intelectual.

Y este fué el caso. El ingeniero de Digital encargado del proyecto DOS se fué (o bien "cabreado", o bien por una oferta que le hizo nuestro avispado Gates). Y nuestro avispado Gates, hizo una carrera contra-reloj para tener finalizado su primer MsDOS (versión 1.0) seis meses antes de que Digital finalizase su CCPM.

IBM tenia prisa por sacar el producto al mercado. Y formó alianza con la incipiente Microsoft para empezar a implementar el MsDOS (PCDOS) en sus ordenadores.

¿Fué una decision acertada?. Personalmente creo que nó. Pensemos que el incipiente CCPM ya era capaz de soportar multitarea (hasta 4 tareas) en modo consola (no existía todavia interfaz grafica) -Por cierto, todavia lo tengo y funciona!!!-.

Fué una triple decision de IBM, que nos condiciona hasta el momento actual:

1) Se definió una arquitectura (bus PC que evolucionó inmediatamente hasta el bus AT. Este bus AT basicmanete se sigue conservando en nuestros actuales PCs y condiciona un monton de cosas que iremos viendo en estos capitulos)

2) Se definió un procesador: arquitectura X86 (el 8086)

3) Se definió un Sistema Operativo (por llamarlo "algo"...), el PC-DOS 1.0

Y de allí surge la todavía frase hecha: "ordenador COMPATIBLE". Pero ¿compatible con que? pues compatible IBM. Con los años se ha perdido la palabra IBM.

Y surge la frase CPU compatible. ¿con qué? pues con la arquitectura X86 de Intel.

** Bien, repasemos un poco dicha CPU. Como todas las CPUs tiene un monton de "patitas", estás se agrupan logicamente en las siguientes funcionalidades:

a) "patitas" de DATOS
b) de direcciones
c) de CONTROL

Es decir, los buses que salen directamente de la CPU, son de "datos" de "direcciones" y de "control". Para escribir un dato en memoria, es necesario enviar el dato y "además" enviar su dirección . Y el bus de "control", es para comunicarse con el resto "del mundo", con los perifericos, con la circuiteria externa, etc...

Esta primera CPU, tenia unicamente 20 "patitas" de direcciones. Y además los registros generales (todas las CPUs tienen una serie de registros generales internos con los que saben hacer ciertas operaciones) eran de 16 bits.

Por tanto con 16 bits en principio, solo se podian dirección ar 2 elevado a la 16 direcciones. Es decir 64 Kbs de memoria. Intel, introdujo en esa CPU, el concepto de "segmentacion" (concepto por el que todavía seguimos pagando "muy caro", muchas, demasiadas "malas herencias").

El concepto de "segmentacion, consiste en utilizar 2 registros generales para formar una dirección fisica. Un registro llamado "segmento" (o base) y un registro llamado "desplazamiento" (offset).

Bien, recordemos que 16 bits, son realmente 16 unos y ceros puestos a continuacion. Agrupemoslos en grupos de 4 bits. Esto forma 4 grupos de 4 bits. Cada grupo de 4 bits, puede tener los valores:

0000  0  (posibles "cuartetos")
0001  1
0010  2
0011  3
0100  4
0101  5
0110  6
0111  7
1000  8
1001  9
1010  A
1011  B
1100  C
1101  D
1110  E
1111  F

En total 16 valores. Por abreviar, podemos representar cada grupo de 4 bites, con el numero o la letra que he puesto a continuacion. Esta es la representacion hexadecimal (base 16).

Recordemos que hay 4 grupos de 4 bits, es decir, puesto entonces en representacion hexadecimal un registro, puede tener el contenido 01A5 o bien 23EF, etc. Es decir desde el 0000 hasta el FFFF (en total desde el numero cero al numero 2 elevado a 16 (menos 1 del cero), es decir 65535 o lo que es lo mismo 64 Kbs.

En España, utilizamos la palabra "octeto" en lugar de byte por una mala traduccion del frances que fué quien implementó esta palabra. Al igual, la palabra "ordenador" proviene de "ordinateur" (frances). Y la palabra "cuarteto" como la mitad de un "octeto" (byte).

** Continuemos un poco más...

Pero como estamos limitados a 20 lineas de direcciones, tal y como comentabamos antes, se definió, que la manera de "sumar" esos dos registros fuese, poniendo uno a continuzacion del otro y desplazando el codigo de segmento un "cuarteto" (o "nible") añadiendolo un cero. Por tanto, por ejemplo: (segmento A012, offset 2312)

Segmento:  A0120
Offset      2312
       ------------
dirección   A2432

Cinco "cuartetos" es decir 20 bits, por tanto se podian dirección ar 10 elevado a 20 posiciones de memoria: todo un "mega". Imposible pensar en un mega en aquel entonces !!!!

Curiosamente hay que fijarse que la manera de construir esto 20 bites, no es unica. Es deir, la misma solucion, nos podría haber dado por ejemplo:

Segmento  A0000
Offset     2432
       -----------
dirección A2432

(esto ya nos puede empezar a dar los problemas de que con dos direcciones de segmento diferentes, se "alcanzan" posiciones de memoria iguales. Por tanto puedo "machacar" desde una dirección de segmento, otra dirección que "teoricamente" pertenece a "otro" segmento.... malo de cara a programacion ¿no?)

A este modo de funcionamiento, es lo que ahora llamamos modo "real" del procesador y a ese mega, es lo que llamamos memoria "real" del procesador.

Y además por definicion, cualquier "compatible" (y los actuales lo són), su CPU, arranca siempre en modo REAL. Es decir, al encender un ordenador actual (PIII por ejemplo), su funcionamiento es "exactamente" igual al funcionamiento del 8086 primitivo. Pero *EXACTAMENTE* igual.

Las CPUs actuales, no han sido más que una evolucion de esta primitiva. Poco despues de nacer el 8086, surgió ya el 80286 capaz de dirección ar 16 megas de memoria. Duró muy poco, ya que fué una transición al 80386. El famoso 386 con el cual se conserva actualmente compatibilidad absoluta (excepto una y solo una nueva instruccion en el Pentium). Por tanto la arquitectura actual se la llama tambien arquitectura 386. El 386, tenía (tiene) un nuevo modo de funcionamiento. El modo "protegido", además del modo "real" y otro modo hibrido entre ellos, que es el modo "Virtual 8086".

Sepamos simplemente que por compatibilidad hacia abajo, el modo real sigue limitado al famoso "mega" inicial, y el modo protegido ya es capaz de ver toda la memoria.

Igualmente recordemos que los registros generales de la CPU, pasan a ser de 32 bits. (excepto los de segmento que siguen en 16).

Por tanto con una dirección de 32 bits, podemos dirección ar 4 gigas de memoria (2 elevado a la 32).

Por compatibilidad, la parte inferior de los 32 bits (los 16 bits inferiores) de cada registro, corresponden a los antiguos registros del 8086.

Los registros generales, podian haberse numerado por ejemplo R0, R1, R2...., tal y como sucede en otras arquitecturas. Pero Intel decidió ponerles "nombre" y ademas, que en ciertas operaciones aritmeticas, fuese obligatorio realizarlos unicamente con ciertos registros y no con todos. Los nombres, fueron tambien tan "raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP, ES, SS, DS. Y estos son los unicos registros con los que se puede operar.

La evolucion posterior al 80486, y Pentium unicamente trajo consigo la posibilidad de incorporar un chip matematico, el 387, que era capaz de realizar operaciones en coma flotante y de paso incorporar una pequeña pero importantisima cantidad de memoria dentro del procesador: la memoria caché de primer nivel.

Posteriormente en el Pentium, se incorporó el juego de instrucciones MMX. Son unas "macro" instrucciones especiales que son muy repetitivas en todo el tratamiento de graficos y video, y que al implementarlas precisamente como "instruccion" hardware, facilitaban la programacion y la "rapidez" a los programas que eran capaces de utilizarlas. No nos llevemos a engaño: ningun sistema operativo las utiliza y además pocos, realmente pocos programas (fundamentalmente los juegos), las utilizan.

El Pentium, solo se distingue de sus predecesores en que tiene una instruccion "más". una sola: el "cpmexchg" es decir: compara dos registros y en funcion de la comparación, los intercambia entre sí. Por compatibilidad hacia abajo, "tampoco" la utilizan los sistemas operativos, ya que si no, tampoco funcionaria dicho sistema en una CPU anterior.

Posterirmente surgió, el Pentium Pro, que basicamente es un pentium optimizado para ejecutar codigo "puro" de 32 bits, pero que se queda ridiculo cuando se le mete codigo de 16. Para solventar esto, nació el PII, que basicamente es un Pentium Pro mejorado para codigo de 16 bits y que además se le incorpora de base la tecnologia MMX.

Y por ultimo estamos en el PIII. La unica diferencia es que se amplia el juego de instrucciones MMX a las llamadas MMX avanzadas.

** Internamente existen muchas diferencias para "acelerar" la CPU. En las primeras CPUs, una instruccion maquina, por ejemplo ADD AX,3 (suma 3 al registro general AX), representaba 3 ciclos de reloj. Tengamos presente que un procesador a 25 MHz (de los 386 primitivos), tenía 25 millones de ciclos de reloj por segundo).

Segun han ido evoluvionando, en los Pentium, esta instruccion utiliza un solo ciclo de reloj (y encima los pentium, pueden llegar ya a 500 millones de cilos de reloj por segundo), y ademas, en el pentium, en "ese" ciclo de reloj, se está utilizando tecnica de "pipeline" (como las fotocopiadoras), es decir aunque este procesando una instruccion, está preparando otra - en total hasta 5 simultaneamente. (en una fotocopiadora, mientras se está haciendo una fotocopia, el papel de la siguiente fotocopia, ya está entrando en la maquina para acelerar el proceso. Esto es la tecnica de "pipeline").

Ademas, para acelerar las CPUs, se ha incrementado su memoria caché de primer nivel, y además se ha creado un "predictor de saltos" optimizado.

Pensemos que cada vez que un programa efectua un "salto", es decir, realiza una operacion del tipo: "Sí esta fecha es mayor que 80, ejecuta la rutina tal y tal...". Bien, este condicional, es un "salto" en las direcciones de memoria de programa. Cada vez que se ejecuta un salto, lo que hay en la caché de primer nivel, no sirve para nada. Es necesario vaciarla y cargarla con el nuevo codigo de programa que empieza en donde apunta dicho "salto". Por tanto, es necesario "invalidar" la caché y cargar desde la dirección que apunta el "salto" otra vez en la caché. Esto es una operacion "costosa". Solucion: ¿y que tal, si tenemos un circuito inteligente dentro de la CPU que sea capaz de "predecir" un salto, y por tanto se vaya encargando de invalidar la caché y cargarlo con lo que ha "predicho"?. Pues genial, la unica condicion es que acierte lo mas posible. Si no, la CPU se nos viene abajo.

Bueno, pues ahora, Intel tiene un juicio pendiente con la tecnologia ALPHA de Digital, por "piratear" su predictor de saltos en la arquitectura "Alpha". (Aprentemente le juicio no va a realizarse ya que   Intel "ha comprado" toda la fabrica de desarrollo de los chips Alpha y su tecnologia hace unos meses.... curioso, tambien ¿no?)

Y otra cosa: fijaros que este predictor de saltos, es importantisimo. Esto es lo que realmente "acelera" una CPU (aparte de la tecnologia "pipeline").

Y la pregunta del millón: ¿la competencia de Intel, tiene suficientemente desarrollada este tipo de tecnologia?. Personalmente opino que nó. No existe ningun indice de velocidad que sea capaz de medirnos esto, y esto, precisamente es lo que sucede en un programa real.

MEMORIA
--------

Poco podemos contar de ella. Es donde se guardan los datos. La evolucion de ella, ha sido unicmanete respecto a la velocidad, y poco más. Variantes: EDO, DIMM, etc..... pero informaticamente, excepto la compatibilidad con nuestra placa madre, y su velocidad, poco mas puede interesarnos.

PLACA MADRE (NORMA DE COMPATIBILIDAD IBM)
-----------------------------------------

*** Bueno, y este será el siguiente capitulo......

**********************************************************

(por cierto, me gustaría algun comentario sobre el "nivel" de lo que cuento. No sé si es alto o bajo, pero creo que es el "minimo" para intentar entender lo que veremos a continuacion, sin entrar demasiado -intento no entrar en absoluto- en terminos tecnicos....)


Volver a Artículos y FAQs

 

     
 

Volver arriba Volver arriba

© 1997-2008 Duiops (http://www.duiops.net)
Prohibida la reproducción parcial o total de los textos o las imágenes

Para comentarios, usa las direcciones e-mail de contacto.