You are on page 1of 15

2

EL PROCESADOR

2.1. Estructura de un ordenador propuesta por Von Neumann.

Un hito importante en la breve e intensa historia de los ordenadores es la idea de Von


Neumann, expuesta en 1946, de construir un ordenador de programa almacenado que sustitu-
yera a los hasta entonces existentes, que trabajaban con programa cableado.

Antes de Von Neumann los programas se introducían en los ordenadores estableciendo


manualmente las conexiones entre las diferentes unidades. La memoria se utilizaba única-
mente para introducir los datos, de forma similar a lo que se hace con las calculadoras de bol-
sillo. La idea de Von Neumann consistió en conectar permanentemente determinadas unida-
des del ordenador, colocándolas bajo un control central, donde las instrucciones eran tratadas
secuencialmente en un ciclo repetitivo de operaciones. Los dos puntos más importantes a te-
ner en cuenta son:

a) Todos los datos y las instrucciones se representan en código binario y se almacenarán


juntos en la memoria del ordenador.

b) El ordenador no hará distinciones entre datos e instrucciones.

Von Neumann propuso una estructura concreta para los ordenadores, y los que se ajustan
a esa estructura se conocen como máquinas de Von Neumann. Una máquina de Von Neu-
mann consta de 3 unidades básicas: Procesador, también llamado CPU (siglas de Unidad
Central de Proceso, en inglés Central Process Unit), memoria y unidad de E/S, que serán es-
tudiados en este tema y en sucesivos. La unidad de E/S permite que el ordenador reciba y en-
víe información al exterior.

21
Apuntes de Informática

PROCESADOR
MEMORIA
Unidad de control
(UC)
(1) UNIDAD DE E/S
(2)
Unidad aritmético- Puerto salida
lógica (ALU) Puerto entrada

(1) Buses de datos y direcciones internos


(2) Buses de datos y direcciones externos

Antes de comenzar el estudio del procesador es conveniente ver la estructura de la memo-


ria, que se explicará de modo más detallado en el tema siguiente.

La memoria esta compuesta de varias celdas, cada una de las cuales es capaz de contener
1 byte y que tiene una dirección para permitirnos acceder a la misma, como se muestra en la
figura adjunta.

MEMORIA

. .
.. ..

00100 00010101
00011 01001001
00010 10110111
00001 10101101
00000 01101101

dirección datos

Para que el procesador pueda acceder a un determinado byte (para leerlo o para escribir en
él) es preciso que conozca su dirección.

El procesador esta conectado con la memoria a través de dos buses, que se llaman bus de
datos y bus de direcciones. El primero sirve para que el procesador intercambie datos con la
memoria y el segundo, para especificar que dirección de memoria debe emplear para ello.
Además, existen unas señales de control que permiten, entre otras cosas, decir si queremos
leer o escribir.

Todo esto se puede ver en el diagrama siguiente:

22
TEMA 2 – El procesador

Procesador Memoria
Bus de datos

Bus de direcciones

Lectura/escritura (W/R)

2.2. Concepto de procesador. Objetivos de un procesador.

El objetivo principal de un procesador es el de ejecutar los distintos pasos de una tarea.


Debe también conseguir funcionar lo mas rápidamente posible, consumiendo la mínima po-
tencia y evitando errores y paradas. Para ello, el procesador utiliza una serie de operaciones
elementales, a partir de las cuales se pueden resolver tareas más complejas. Cada una de las
operaciones elementales tiene un código binario y puede tener uno, o varios operandos sobre
los que actuar.

El procesador dispone habitualmente de un conjunto reducido de posiciones de memoria


internas, que se conocen como registros, y que le permiten almacenar los datos y los resulta-
dos con los que está trabajando en ese momento.

El procesador, o CPU, consta básicamente de dos partes: La unidad aritmética-lógica


(ALU, es decir aritmetic-logic unit) y la unidad de control (CU o control unit). Ambas las
veremos a continuación con más detalle.

2.3. La unidad aritmética lógica.

La unidad aritmética lógica o ALU de nuestro ordenador es la encargada de realizar las


operaciones aritméticas (suma, resta, comparación, producto, cociente) y lógicas (y, o, no, o
exclusivo). Está formada por el acumulador, un conjunto de circuitos lógicos, y el registro de
códigos de condición o flags.

En los procesadores más primitivos el acumulador era el registro que contenía obligato-
riamente uno de los operandos y el resultado de las operaciones. Los procesadores más mo-
dernos no tienen un registro tan especializado, normalmente cualquier registro puede contener
los operandos y los resultados de las operaciones.

Los códigos de condición (o flags de estado del programa), informan acerca de la opera-
ción más reciente que ha ejecutado la ALU. Los flags más importantes son C (carry), Z (zero)
y OV (overflow). El primero (carry) se activa (pone a 1) cuando el resultado de la última ope-

23
Apuntes de Informática

ración aritmética, considerando los operandos sin signo, no puede almacenarse correctamente;
por ejemplo, suponiendo que la CPU fuera de 4 bits, al sumar 1010 con 1101, el resultado es
0111 y C=1, ya que el resultado real es 10111, que no puede almacenarse con 4 bits. El se-
gundo (zero) se activa cuando el resultado es cero, por ejemplo al sumar 1001 con 0111. Fi-
nalmente, el overflow es como el carry, pero para operandos con signo.

Todas las operaciones realizadas por la ALU se expresan en términos de un gran número
de pequeños pasos, involucrando cada una, a uno o varios de los circuitos lógicos.

2.4. La unidad de control.

La unidad de control, reducida a la mínima expresión, consta de contador de programa


(normalmente llamado PC), decodificador de instrucciones, puntero de pila (comúnmente
llamado SP, en inglés Stack Pointer) y, opcionalmente, de registro índice.

La unidad de control tiene, así mismo, algo muy necesario, que es el generador de im-
pulsos de reloj, encargado de sincronizar el funcionamiento del procesador. Para ello, se em-
plea un cristal de cuarzo externo a la CPU que le suministra a través de una de sus patas una
onda cuadrada. Cada período de la onda recibe el nombre de ciclo de reloj, y se utiliza su fre-
cuencia para medir la velocidad del procesador. Para realizar cualquier operación, el procesa-
dor tiene unas tablas en las que se especifica los ciclos de reloj que dura, la unidad de control
coloca los operandos necesarios para la misma, donde se necesiten y espera los ciclos que
marca la tabla, para darla por concluida.

Las funciones de la unidad de control son las de controlar el funcionamiento paso a paso
del procesador, mientras éste ejecuta cada una de las instrucciones de un programa. De forma
más especifica, las funciones de la unidad de control son:

a) Controlar la secuencia en que se ejecutan las instrucciones.

b) Controlar el acceso del procesador a la memoria principal.

c) Regular las temporizaciones de todas las operaciones que ejecuta el procesador.

d) Enviar y recibir señales de control desde los periféricos.

El contador de programa, o PC, contiene la dirección de la instrucción del programa que el


procesador ejecuta en cada momento. Una vez que se ha tomado la instrucción de la memoria
principal se incrementa el contenido del contador del programa. Dependiendo del tamaño en
bytes de las instrucciones que se ejecuten, así será incrementado el contador de programa.

Una vez leída la instrucción, ésta pasa a la unidad de decodificación, que es la encargada
de ver que tipo de instrucción es, que operandos tiene, etc. Finalmente pasa a la unidad de
ejecución donde es ejecutada. Si para ejecutar la instrucción se precisa realizar alguna opera-
ción aritmética o lógica se pasa el control a la ALU para que la realice. Después con el PC ya
incrementado empieza un nuevo ciclo para ejecutar la instrucción siguiente. Así pues, el pro-
cesador ejecuta los programas de modo secuencial, no obstante existen instrucciones que
permiten evitar esto, son las instrucciones de salto.

24
TEMA 2 – El procesador

Parte de la memoria principal se reserva para ser utilizada como una pila (LIFO), es decir,
el primer dato en entrar en la pila es el último en salir. Con lo cual es óptima para guardar la
información del estado del programa (valores de los registros, flags, PC) cuando una interrup-
ción requiere al procesador para otra tarea, permitiendo así, regresar al estado original de una
forma natural.

El registro índice se usa se usa para implementar el modo de direccionamiento indexado. Los
modos de direccionamiento se verán más adelante en este mismo tema.

2.5. Un modelo de ordenador: Buses.

Hasta ahora nos hemos ocupado de cómo es el procesador por dentro. Veamos ahora co-
mo se comunica con el exterior.

El procesador está encapsulado en plástico y tiene una serie de patas a través de las que se
conecta al resto de componentes del ordenador. Se puede dividir el conjunto de patas en tres

25
Apuntes de Informática

bloques: el bus de datos, el bus de direcciones y las señales de control. Además necesita unas
patas dedicadas a la alimentación eléctrica del chip.

El bus de datos son las líneas por las que el procesador lee o escribe datos en la memoria o
en los periféricos. Consta normalmente de 8, 16, 32 o 64 hilos, cada uno de ellos representa
un bit del dato que el procesador lee o escribe.

El bus de direcciones son las líneas por las que el procesador decide la posición de memo-
ria con la que quiere comunicarse. Cada posición tiene un número y dependiendo del número
de hilos que compongan dicho bus, el procesador podrá manejar más o menos memoria. Aun-
que el bus de datos sea de más de 8 bits, por razones de compatibilidad las posiciones de me-
moria se numeran de 8 en 8 bits. Análogamente al bus de datos, por cada hilo del bus de di-
recciones circula un bit, y la dirección se forma con el número binario que representan dichos
bits. Los tamaños más comunes de bus de direcciones son 16 (lo que permite tener 64Kb de
memoria), 20 (1Mb), 24 (16Mb) y 32 (4Gb).

Las señales de control sirven para que el procesador pueda controlar lo que hace, por
ejemplo hay una llamada W/ R que le sirve al procesador para indicar cuando quiere leer y
cuando quiere escribir, si la señal está a 0 se trata de una lectura y si está a 1 el procesador
necesita escribir.

26
TEMA 2 – El procesador

El dibujo anterior corresponde a un procesador 80386SX de AMD, y en él se pueden ob-


servar el Bus de direcciones (A0, ... , A23), el bus de datos (D0, ... , D15) y líneas de control
como W/ R (selección escritura/lectura), M/ IO (selección memoria/Entrada-salida). Además
la alimentación corresponde a las marcadas como VCC y VSS es la masa de referencia, la en-
trada de reloj es la marcada como CLK2 y la pata de interrupcciones es INTR.

Hay dos formas de comunicación con los periféricos. Algunos procesadores emplean lo
que se llama mapeado en memoria, que consiste en que determinadas direcciones de memoria
están reservadas para los periféricos, y al leer o escribir en ellas se puede comunicar el proce-
sador con un determinado periférico. Los procesadores de Motorola suelen funcionar de este
modo. Por el contrario Intel en sus procesadores emplea un espacio de entrada/salida separa-
do, eso quiere decir que existe una señal de control llamada M/ IO , con la cual el procesador
decide si quiere comunicarse con un periférico (cuando esté a 0) o con la memoria (cuando
esté a 1). De todos modos sigue empleando el mismo bus para los datos y las direcciones. Las
direcciones de los periféricos se suelen llamar puertos.

En cualquiera de los dos casos anteriores, en el acceso a los periféricos el procesador em-
plea tres estrategias:

a) Escrutinio: Consiste en leer periódicamente el estado del periférico para decidir lo que
debe hacer. Por ejemplo, si se usa un teclado de esta forma, periódicamente (por ejem-
plo, cada centésima de segundo) se lee a través de un puerto un registro de estado del
teclado, que informa de sí hay una tecla pendiente de ser leída, en ese caso el procesa-
dor lee la tecla a través de otro puerto.

b) Interrupción: El periférico interrumpe al procesador cuando necesita ser atendido, pa-


ra ello el procesador dispone de una señal de control llamada INTR, que debe ser usa-
da en ese caso, existe además un controlador de interrupciones externo encargado de
canalizar todas las posibles peticiones de interrupción. Cuando se interrumpe al proce-
sador, éste para lo que está haciendo y ejecuta un programa de atención al periférico.
Cuando acaba dicho programa, se vuelve al estado anterior y continúa con lo que ha-
cía al ser interrumpido. La pila sirve para conservar el estado del procesador cuando
se produce la interrupción, y poder continuar más adelante. Por ejemplo, el reloj fun-
ciona de esta forma. Cada cierto tiempo (por ejemplo, una centésima de segundo) inte-
rrumpe al procesador y le fuerza a que ejecute un programa que se encarga de incre-
mentar la hora, que está almacenada en varias posiciones de memoria (una para las
centésimas de segundo, otra para los segundos, etc.).

c) Acceso directo a memoria: Cuando un periférico necesita enviar varios datos conse-
cutivamente a memoria, los dos métodos anteriores son muy difíciles de emplear y se
emplea éste, que consiste en tener un chip de apoyo al procesador que se llama con-
trolador de DMA (acceso directo a memoria) que es capaz de leer y escribir en memo-
ria sin ayuda del procesador. Un ejemplo de esto es el caso de los disquetes, cuando se
lee un sector, se deben transferir 512 bytes del disquete a la memoria. En este caso, se
programa al controlador de disquetes para que lea el sector y lo envíe al controlador de
DMA. Por otra parte, se programa al controlador de DMA para decirle que la unidad
de disquetes va a enviarle 512 bytes, que tiene que poner a partir de determinada posi-
ción de memoria. Después de hecho esto, el procesador no tiene que intervenir para
nada en la operación, la realizan entera solos el controlador de disquetes y el controla-

27
Apuntes de Informática

dor de DMA. Para avisar al procesador de que la lectura ha concluido se utiliza una
interrupción.

2.6. Lenguaje ensamblador. Modos de direccionamiento.

Las instrucciones que controlan el funcionamiento paso a paso de un procesador se escri-


ben en lenguaje máquina o código máquina, siendo estas instrucciones desarrolladas en fun-
ción de la arquitectura del ordenador. En consecuencia, cada tipo de procesador tiene su pro-
pio lenguaje máquina. Siendo generales las siguientes características para todo lenguaje má-
quina:

a) Las instrucciones en lenguaje máquina están en código binario.

b) Cada instrucción en lenguaje máquina tiene una parte dedicada al código de operación
(que indica la operación que va a llevarse a cabo) y, otra parte dedicada al operando, u
operandos, que necesita para hacer la operación.

c) Cada procesador tiene su propio juego de registros y su propio código máquina. Los
programas realizados específicamente para un procesador sólo pueden funcionar en él.

En los tiempos primitivos de los ordenadores, se escribía directamente en lenguaje máqui-


na, es decir, el programador debía mirar en unas tablas los códigos binarios de cada instruc-
ción e introducirlos de alguna forma en el ordenador. Pero los ordenadores son los aparatos
ideales para realizar cosas como mirar en una tabla y traducir con ella unos símbolos por
otros, por tanto, hoy nadie programa en lenguaje máquina, cada instrucción tiene un mnemó-
nico, escrito en un lenguaje más similar al de los humanos: ADD sirve para sumar, SUB para
restar, etc.; es lo que se conoce con el nombre de lenguaje ensamblador, y un programa de
ordenador, llamado también ensamblador, traduce las citadas expresiones al código binario
que puede usar después la CPU, es decir, al código máquina.

Los operandos de las instrucciones en lenguaje máquina pueden estar en la memoria prin-
cipal del ordenador, en registros, o en la propia instrucción. Los métodos para especificar los
operandos se conocen habitualmente como modos de direccionamiento, aunque haya casos en
que no se empleen direcciones de memoria. Cada procesador tiene sus propios modos de di-
reccionamiento, aquí estudiaremos los más comunes.

Los ordenadores con uno o dos operandos por instrucción son los más frecuentes, aunque
existen ordenadores con más operandos por instrucción, e incluso, sin referencia a operandos
en la instrucción; en estos los operandos se obtienen de la memoria, considerando ésta como
una pila. Nosotros nos limitaremos a considerar el caso de operaciones con uno o dos operan-
dos.

A continuación se dan ejemplos de instrucciones escritas en lenguaje ensamblador para la


familia 80x86 (cada procesador tiene también su propio lenguaje ensamblador), que hacen
referencia a ninguno, a uno, o a dos operandos.

28
TEMA 2 – El procesador

Instrucciones sin operandos: CLC

Borra (CLear) el flag Carry, en realidad tiene un operando que es el carry, pero forma
parte del código de la instrucción.

Instrucciones de un operando: INC I

Incrementa en 1 el contenido de la posición de memoria o registro I. Las variantes


que se admitan para el valor de I dependen de los modos de direccionamiento del
procesador.

Instrucciones de dos operandos: ADD I,J

Suma los números I y J (en registros o en memoria), y almacena el resultado en I. Hay


procesadores que funcionan con el esquema inverso, es decir el operando en el que
queda el resultado es el que se pone en segundo lugar, la que se ha descrito es la em-
plean los procesadores de Intel.

Veamos ahora los modos de direccionamiento más comunes. Para ello vamos a usar la
sintaxis de los procesadores Intel de la familia 80x86 simplificada. Supondremos que el pro-
cesador tiene un bus de datos de 16 bits, un bus de direcciones también de 16 bits y registros
de 16 bits llamados AX, BX, CX, DX, que son a su vez divisibles en 2 mitades de 8 bits, AH
(parte alta) y AL (parte baja) para AX y de forma similar para el resto. Usaremos en todos los
casos (salvo en el relativo) la instrucción MOV que sirve para mover datos y tiene dos ope-
randos, uno fuente, que es el dato que se copia, y otro destino, que es donde queda la copia.
Supondremos que el destino es siempre un registro, los procesadores de Intel sólo permiten
que uno de los dos operandos este en memoria, el otro obligatoriamente es un registro. Todos
los números empleados están en hexadecimal.

DIRECCIONAMIENTO INMEDIATO

Este es el modo de direccionamiento más sencillo. Un operando inmediato es un dato


que forma parte de la instrucción en lenguaje máquina. Por ejemplo MOV AX,5 pone
el número 5 en el registro AX. El número 5 forma parte del código de la instrucción.

DIRECCIONAMIENTO REGISTRO

El operando no está en memoria, está en un registro. Por ejemplo la instrucción MOV


AX,BX copia el contenido del registro BX al registro AX.

DIRECCIONAMIENTO DIRECTO O ABSOLUTO

La instrucción lleva un operando que es la dirección de memoria del dato. Por ejemplo
MOV AX,[1234], lee el dato de 16 bits contenido en las posiciones de memoria 1234
y 1235 y lo pone en AX (en el caso de los procesadores Intel el contenido de la posi-
ción baja 1234 va a la parte baja de AX: AL y el de la alta 1235 a AH, hay otros pro-
cesadores que funcionan a la inversa).

29
Apuntes de Informática

DIRECCIONAMIENTO INDIRECTO

La instrucción tiene un operando que contiene la dirección donde está el dato. Por
ejemplo MOV AX,[BX], lee el contenido de BX, supongamos que es 1234, entonces
el contenido de las posiciones de memoria 1234 y 1235 pasa a AX.

DIRECCIONAMIENTO INDEXADO

La instrucción contiene un número que sumado al contenido del registro índice (puede
haber varios registros índices y en ese caso hay que especificar cual de ellos hay que
emplear) nos dice la dirección de memoria en la que está el dato. Por ejemplo supon-
gamos que tenemos una tabla en memoria en la posición 1234 que contiene los días de
cada mes de año, es decir en 1234 hay 31, en 1235 28, etc., supongamos que tenemos
en BX el mes del año (0=enero, 1=febrero, etc.) del que queremos saber lo que dura,
entonces la instrucción MOV AL,1234[BX] nos permite saberlo, ya que se suman
1234 y BX y el resultado es la dirección de memoria que contiene la duración del mes,
que es leída a AL (no empleamos AX pues las longitudes de los meses se pueden codi-
ficar con 8 bits).

Si escribimos en lenguaje ensamblador en lugar de en código máquina la dirección de la


tabla en memoria la calcula el programa ensamblador, no tenemos que hacerlo nosotros,
por ejemplo en el caso anterior pondríamos:

MOV AL,DIASMES[BX]
...
DIASMES:DB 31,28,31,...

DIRECCIONAMIENTO RELATIVO

El operando representa un número que se debe sumar al PC para obtener la dirección.


En los procesadores de la familia 80x86 sólo se emplea para instrucciones de salto. La
instrucción JMP +25 hace que el programa se salte 25 bytes (el registro PC contiene la
dirección de la instrucción que va a ejecutar a continuación, el sumarle 25 bytes equi-
vale a saltarse las instrucciones contenidas en ellos) y continue ejecutándose a partir
de la posición PC+25. La utilidad de esto es hacer programas reubicables, si un pro-
grama comienza en la dirección de memoria 100 por ejemplo y deseamos cambiarlo a
la 200, si empleara saltos absolutos habría que modificarlo para que pudiera ejecutarse
en la nueva posición de memoria, mientras que con saltos relativos se puede cambiar a
la posición de memoria 200 y sigue funcionando perfectamente.

2.7. Los procesadores reales, procesadores dedicados y de propósito general.

En muchos procesadores reales el contador de programa, el registro índice, el puntero de


pila y el acumulador no son registros específicos dedicados a esas tareas, sino que forman
parte de un conjunto de registros de propósito general. Es decir, cualquier registro de propó-
sito general se puede emplear para la tarea especifica de registro acumulador u otro de los
citados.

30
TEMA 2 – El procesador

Algunos procesadores tienen hardware dedicado a realizar operaciones aritméticas, como


por ejemplo la multiplicación en coma flotante, en vez de realizarlo por software, consiguien-
do por tanto realizarlo en menos tiempo. Son pues más potentes, pero obviamente más caros.

En el mundo de los ordenadores nos encontramos con máquinas dedicadas a tareas especí-
ficas, que han visto mermado su campo de aplicación en aras de una mayor efectividad. Son
ordenadores que tiene procesadores dedicados, por ejemplo, a jugar al ajedrez, a resolver
ecuaciones diferenciales, a representar imágenes 3D en pantalla, etc., y que son más competi-
tivas que otras máquinas, con procesadores de propósito general, para la tarea concreta para la
que se diseñaron, en cambio no se pueden utilizar para otra cosa. En contraposición, un orde-
nador de propósito general, es menos efectivo para esa tarea concreta pero puede ser emplea-
do también para cualquier otra.

Por último conviene citar que existen dos filosofías a la hora de diseñar un procesador de
propósito general: CISC y RISC. Los procesadores RISC son procesadores con un conjunto
reducido de instrucciones, esto significa que se ha reducido el número de instrucciones, sien-
do todas ellas más sencillas, pero a cambio han ganado velocidad, ya que dedican más tran-
sistores a la parte de la ALU quitándolos de la parte de control (CU). Los CISC, en cambio,
tienen un conjunto más amplio de instrucciones, pero eso redunda en una pérdida de veloci-
dad. No obstante los procesadores CISC actuales se acercan cada vez más al rendimiento de
los RISC, ya que cada vez se integran más transistores por chip. Debido a ello, se pueda con-
seguir que las instrucciones más elementales, que son por otra parte las más utilizadas, puedan
realizarse en un ciclo de reloj, es decir, a la máxima velocidad posible. Las intrucciones más
complejas (que no existen en un procesador RISC) se realizan en más de un ciclo de reloj.

2.8. La familia de procesadores Intel 80x86.

En este último apartado vamos a estudiar algo más detalladamente la evolución histórica
de los procesadores de Intel, empleados en los ordenadores IBM PC y compatibles.

El primer microprocesador de la historia, aunque hay alguna disputa al respecto, fue el


4004, creado por Intel a petición de un fabricante de calculadoras japonés, pero que al final no
se llegó a usar, era un micro de 4 bits y fue diseñado a finales del año 1971.

El sucesor del 4004 fue el 8008, diseñado al año siguiente, ya era un procesador de 8 bits,
pero tampoco tuvo gran difusión.

El primer procesador que se empleo en grandes cantidades fue el 8080, fabricado el año
1974, tenía un bus de datos de 8 bits, un bus de direcciones de 16 bits y 7 registros de 8 bits
de propósito general, más el contador de programa, puntero de pila y registro de flags. Fun-
cionaba a 2MHz.

El sucesor del 8080 fue el 8085 que casi no aportaba ninguna novedad con respecto al
anterior y que por tanto no merece mayor mención.

El primer procesador de la familia 80x86 fue el 8086, fabricado el año 1978, era ya un
procesador de 16 bits, que tenía un bus de datos de 16 bits, un bus de direcciones de 20 bits y

31
Apuntes de Informática

7 registros de 16 bits de propósito general, además de los consabidos PC (que rebautizaron


como IP), SP y flags. Funcionaba a 5MHz y posteriormente a 8MHz. Debido a que los regis-
tros no tienen suficiente capacidad para contener una dirección de memoria, emplea un mo-
delo segmentado. Existen 4 registros extra de 16 bits DS, ES, CS y SS, llamados segmentos
de datos, extra, de código y de pila, que sirven para poder formar las direcciones de 20 bits.
Para formar una dirección el procesador toma un registro de segmento, lo multiplica por 16
(con lo que obtiene un número de 20 bits) y le suma un offset de 16 bits, obteniendo así una
dirección final de 20 bits. Por este procedimiento se puede acceder a 4 zonas de memoria de
64Kb dentro del rango de 1Mb, de ellas una está reservada para el código (la apuntada por
CS) y otra para la pila (la de SS), si se quiere acceder a más memoria hay que cambiar los
registros de segmento.

Un año después apareció el 8088, idéntico al anterior, salvo por tener un bus de datos de 8
bits, lo que lo hacía muy apropiado para construir un ordenador personal, ya que para manejar
los periféricos podía ayudarse por los chips de 8 bits desarrollados para los microprocesadores
de 8 bits como el 8080, por ello fue el elegido por IBM para construir su ordenador IBM PC,
PC/XT, portátil y en el PCjr ( PC Junior ). La velocidad también se mantuvo en 5 y 8 Mhz.

El siguiente miembro de la familia, el 80186, ha pasado por el mundo del PC, práctica-
mente desapercibido. Suponía respecto a sus predecesores, un aumento de velocidad pequeño
y no rentaba su fabricación para las mejoras conseguidas, por lo que se instaló en muy pocos
aparatos. Sus buses de datos y de direcciones eran iguales que en los micros anteriores. Tam-
bién existió el 80188.

El 80286 fue un avance importante en la historia del PC, comercializándose a mediados


del año 1.984 bajo el modelo AT y todos los compatibles con él.

Es un microprocesador que trabaja con un bus de datos de 16 bits, con un bus de direccio-
nes de 24 bits (por lo que puede trabajar con una capacidad de memoria de 16Mb) y una velo-
cidad de reloj que oscila entre 8 y 16Mhz. Además de la mejora de velocidad (superior a lo
que indican los MHz del reloj), introdujo un nuevo modo de funcionamiento, el modo prote-
gido, el modo compatible con el 8086 se llamó modo real. El modo protegido estaba diseñado
para trabajar en multitarea. La multitarea es la capacidad de una CPU de desarrollar varias
tareas al mismo tiempo (como por ejemplo realizar un dibujo, realizar un presupuesto en una
hoja de cálculo, buscar un dato en una base de datos, etc.), en realidad el microprocesador
sólo es capaz de realizar una sola cosa a la vez y se simula que hace varias mediante rápidos
cambios de atención del micro a los distintos programas que estén funcionando. El nombre de
modo protegido deriva de que el procesador debe tener mecanismos especiales para proteger
unas tareas de otras y conseguir, por ejemplo, que cada una no pueda escribir más que en su
propia memoria, o que sí una aplicación se cuelga (deja de funcionar por alguna razón), eso
no afecte al resto del sistema. En modo protegido además podía disponer de memoria virtual,
es decir, podía simular que disponía de más memoria de la que tenía físicamente, usando para
ello un fichero en el disco duro, en el que se almacenan los datos y programas que deberían
estar en memoria, pero que no hace falta que estén, pues no se necesitan en ese momento.

No obstante el 80286 tiene varios fallos, el primero y principal es que los programas dise-
ñados para funcionar en modo real no pueden hacerlo en modo protegido y viceversa, además
el aumento de memoria, la multitarea, la memoria virtual, etc. es sólo posible para los pro-
gramas en modo protegido. Además, seguía empleando segmentos de 64Kb, lo cual es tolera-
ble en un micro como el 8086 pensado para la monotarea, pero no lo es tanto en un micro

32
TEMA 2 – El procesador

como el 80286, y para colmo, el procesador arranca en modo real, tiene una instrucción que
permite pasar a modo protegido, pero olvidaron poner una instrucción para volver a modo
real, de modo que se impedía el funcionamiento de los antiguos programas al pasar a modo
protegido. Por todo ello, el modo protegido es prácticamente inútil y el 80286 no es más que
un 8086 rápido.

El año 1985 INTEL empezó la fabricación del 80386, que pasaría a denominarse poste-
riormente 386DX, en este caso las mejoras eran importantes, lo fundamental es que extendió
el bus de datos, el de direcciones y los registros a 32 bits, ahora se podía direccionar toda la
memoria, que en este caso es nada menos que 4Gb, sin necesidad de segmentos. Además la
velocidad pasó a ser entre 16 y 40 MHz y el modo protegido, único en el que se puede acce-
der a las mejoras de memoria, se hizo más compatible con el modo real: no sólo incluyeron la
instrucción para volver a modo real, sino que hicieron que los programas diseñados para mo-
do real pudieran funcionar en un submodo del modo protegido, el modo V86, pudiendo eje-
cutarse en multitarea varios de ellos o con programas diseñados para el modo protegido. Por
alguna extraña razón, IBM en principio no empleó este micro en sus ordenadores y hubo que
esperar a la llegada de los PS/2 para verlo en modelos de IBM.

Tres años más tarde del lanzamiento del 386DX, Intel sacó al mercado el 386SX, para
competir con AMD que fabricaba micros 80286 más rápidos y baratos que los de Intel. Bási-
camente el 386SX es un 386DX por dentro y un 80286 por fuera, es decir, tiene todas las ca-
racterísticas del 386DX, pero se ha reducido el bus de datos a 16 bits y el de direcciones a 24,
lo que permite emplear como chips de apoyo los mismos que para el 80286 y sin embargo
tener un auténtico micro de 32 bits.

El siguiente de la serie fue el 486DX, básicamente igual al 386DX, pero con el coprocesa-
dor y 8Kb de memoria caché incorporada en el chip. Los modelos anteriores disponían de un
compañero llamado 8087, 80287, 80387 que permitía realizar operaciones en coma flotante,
ya que el procesador sólo es capaz de operar con enteros, en el caso del 486DX no era ya ne-
cesario, pues estaba incluido en el propio procesador. La memoria caché era en este modelo
casi imprescindible, era el primero que se acercaba a los procesadores RISC, era capaz de
ejecutar algunas de sus instrucciones en tan sólo un ciclo de reloj, y para poder hacer eso se
necesita tener los datos en el propio procesador, sin necesidad de ir a buscarlos a la memoria.
Empezó a funcionar a 20MHz y llegó hasta los 50MHz.

Posteriormente y de modo análogo al caso del 386SX, Intel sacó una versión reducida del
486DX, llamada 486SX, a la que se le había quitado el coprocesador. También comercializó
un 487SX, que era en realidad un 486DX que además desactivaba el 486SX junto al que se
instalaba.

Posteriormente aparecieron los 486DX2 y 486SX2, eran iguales que sus homónimos sin el
2, pero internamente doblaban la velocidad del reloj; así el 486DX2-66 funcionaba interna-
mente a 66MHz y externamente a 33MHz igual que el 486DX-33, con ello y gracias a los
8Kb de memoria caché interna casi duplicaba el rendimiento de un 486DX-33. Más adelante
aparecieron modelos 486DX4 que en realidad multiplicaban por 3 la frecuencia externa de
funcionamiento, es decir un 486DX4-100 funcionaba a 33MHz por fuera y a 100MHz por
dentro, AMD llegó incluso a fabricar 486DX5-133 que funcionaban a 33MHz por fuera y
133MHz internamente.

33
Apuntes de Informática

En sus batallas legales con Cyrix y AMD para que no pudieran usar el mismo nombre en
los procesadores compatibles que fabricaban, no consiguió que le dejaran usar los números
386, 486, etc. como marca registrada, por tanto cambió la numeración por una palabra como
Pentium que sí le fue posible registrar como marca. Por eso los procesadores compatibles
Pentium de Cyrix se llaman 6x86 y los de AMD K5 y K6.

Los primeros Pentium aparecieron el año 1991 y funcionaban a 60 y 66MHz (tanto interna
como externamente), las mejoras más significativas de los mismos eran: un bus de datos de 64
bits, un tamaño doble de la cache interna, pasando a 16Kb, 8Kb para datos y otros 8Kb para
código, una unidad doble de operaciones con enteros, lo que le permite ejecutar simultánea-
mente 2 instrucciones por ciclo de reloj (es lo que se llama superescalar) y diversas mejoras
en el rendimiento, como predicción de saltos, etc.

Los siguientes microprocesadores fueron


q el Pentium Pro, que cuenta en su interior no sólo con la cache L1, sino también con
256 o 512Kb de caché L2, Utilizó encapsulado distinto del Pentium.

q el Pentium MMX, que incorpora 57 nuevas instrucciones que operan con varios ente-
ros a la vez, utilizando para ello los 64 bits de la mantisa de los registros del coproce-
sador, que pueden dividir en 8 registros de 8 bits, 4 de 16 o 2 de 32 y operar simultá-
neamente con ellos. Utilizó el mismo encapsulado que el Pentium y se fabrico hasta
233 MHz (velocidad interna, la velocidad externa era 66 MHz).

q El Pentium II, que es básicamente un Pentium Pro con instrucciones MMX.. El Pen-
tium MMX se fabrica hasta 233MHz y el Pentium II hasta 450MHz. Como en el caso
de los 486 estas velocidades son internas, externamente funcionan a 66MHz o a
100MHz (Pentium II, desde el 350MHz).

q El Pentium III se lanzó 28 de febrero de 1999 con velocidades de 450, 500 y 550
MHz, aunque posteriormente alcanzó 1 GHz. Este procesador de Intel no descubre
ninguna arquitectura innovadora: simplemente, se trata de un Pentium II modificado
para emplear un conjunto de 70 nuevas instrucciones para la aceleración de gráficos
3D, reproducción de vídeo y sonido digital, tratamiento de imágenes y reconocimiento
de voz. Otra característica, que provocó cierto revuelo entre los consumidores y algu-
nos medios informativos, fue la inclusión en cada procesador Pentium III de un núme-
ro de serie único. El número de serie lo leía el software con el fin de utilizarlo para di-
versos fines como, por ejemplo, realizar una identificación de un usuario en una red
local o en Internet. Levantó airadas críticas entre los grupos defensores de la privaci-
dad de los usuarios de Internet, por lo que Intel decidió que dicha característica se
deshabilitará por defecto en los Pentium III de nueva fabricación y que fuera el usua-
rio quién la activara mediante un software diseñado para tal efecto.

El último en salir al mercado ha sido el Pentium 4 disponible a velocidades de hasta 1.70


GHz, aunque parece que antes de finales del 2001 lo lanzarán a 2 GHz. Este chip es de diseño
totalmente nuevo. La mayor ventaja con respecto al anterior es que se ha aumentado la longi-
tud de la pipeline, lo que permite alcanzar mayores velocidades de reloj (cada instrucción se
ejecuta en más etapas, cada una de ellas más sencilla), el inconveniente es que cuando falla
una predicción de salto la penalización es mayor, por eso a igualdad de velocidad, es más
lento que el Pentium III. Actualmente se fabrica con 0,18 micras, aunque la compañía también
ha anunciado la finalización de las pruebas sobre 0,13 micras, completando así el desarrollo

34
TEMA 2 – El procesador

de esta tecnología de proceso, con el que el procesador logrará alcanzar los 42 millones de
transistores.

Todo lo anterior se puede resumir en las siguientes tablas.

Fecha Bus Memoria Memoria Transisto-


micro Velocidad
Introducción datos física virtual res
4004 15-11-71 108 KHz 4 bits 640 bytes 2.300
8008 1-4-72 108 KHz 8 bits 16 Kb 3.500
8080 1-4-74 2 MHz 8 bits 64 Kb 6.000
8086 8-6-78 5 MHz – 8 MHz 16 bits 1 Mb 29.000
8088 1-6-79 5 MHz – 8 MHz 8 bits 1 Mb 29.000
80286 1-2-82 8 MHz – 16 MHz 16 bits 16 Mb 1 Gb 134.000
386DX 17-10-85 16 MHz – 33 MHz 32 bits 4 Gb 64 Tb 275.000
386SX 16-6-88 16 MHz – 20 MHz 16 bits 16 Mb 64 Tb 275.000
486DX 10-4-89 16 MHz – 33 MHz 32 bits 4 Gb 64 Tb 1.200.000
486SX 22-4-91 16 MHz – 33 MHz 32 bits 4 Gb 64 Tb 1.185.000
Pentium 22-3-93 60 MHz – 200 MHz 64 bits 4 Gb 64 Tb 3.100.000
Pentium Pro 27-3-95 150 MHz – 200 MHz 64 bits 4 Gb 64 Tb 5.500.000
Pentium MMX enero 97 166 MHz – 233 MHz 64 bits 4 Gb 64 Tb 4.500.000
Pentium II mayo 97 233 MHz – 450 MHz 64 bits 4 Gb 64 Tb 7.500.000
Celeron abril-98 266 MHz- 850 MHz 64 bits 4 Gb 64 Tb 19.000.000
Pentium III 28-2-99 450 MHz- 1 GHz 64 bits 4 Gb 64 Tb 28.000.000
Pentium IV noviembre-2000 1.30 GHz- 1.70 GHz 64 bits 4 Gb 64 Tb 42.000.000

Micro Bus de Direcciones Bus de Datos Equipo - Otras características


8086 20 16 PC
8088 20 8 PC-XT
PC-AT
80286 24 16
Multitarea, Modo Real y Modo Protegido
SX 16
PS-2
80386 DX 32
32
SL Bajo consumo
SX
SIMILARES AL 80386
SL Bajo consumo
80486
DX 80386 + COPROCESADOR +
DX2 8K DE CACHE Velocidad interna doble
P5 Más de una instrucción por ciclo de reloj
32 64
(PENTIUM) L1 – 16 K ; L2 – 512 K
P6 Hasta 5 instrucciones por ciclo. Pos RISC.
(PENTIUM 32 64
L1 – 32 K ; L2 – 1 M
PRO)
Instrucciones MMX.
Se conecta mediante Slot a la placa.
PENTIUM II 32 64
Velocidad de placa hasta 100 MHz
L1 – 32 K ; L2 – 512 K
Arquitectura P6
70 nuevas instrucciones para internet.
PENTIUM III 32 64
Nº de serie; Velocidad de placa hasta 133 MHz
L1 – 32 K ; L2 – 512 K
Tecnología 0.18 µm
Conexiones internas de aluminio
Pinchado en placa base;Memoria tipo RIMM
PENTIUM 4 32 64
144 instrucciones nuevas
6 instrucciones por ciclo de reloj
L1 – 20 K ; L2 – 256 K

35

You might also like