Está en la página 1de 18

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 almacena-
do que sustituyera a los hasta entonces existentes, que trabajaban con programa ca-
bleado.

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


ciendo manualmente las conexiones entre las diferentes unidades. La memoria se
utilizaba únicamente para introducir los datos, de forma similar a lo que se hace con
las calculadoras de bolsillo. La idea de Von Neumann consistió en conectar perma-
nentemente determinadas unidades del ordenador, colocándolas bajo un control cen-
tral, donde las instrucciones eran tratadas secuencialmente en un ciclo repetitivo de
operaciones. Los dos puntos más importantes a tener en cuenta son:

a) Todos los datos y las instrucciones se representan en código binario y se alma-


cenaran 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 Neumann 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 estudiados en este tema y en sucesivos. La unidad de
E/S permite que el ordenador reciba y envíe información al exterior.

23
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 memoria, 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 intercam-
bie 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.

24
TEMA 2 – El procesador

Todo esto se puede ver en el diagrama siguiente:

Procesador Memoria
Bus de datos

Bus de direcciones

Lectura/escritura (W/R)

2.2. Concepto de un procesador. Objetivos de un procesador.

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


tarea, debe también de lograr funcionar lo mas rápidamente posible, consumiendo la
mínima potencia y evitando errores y paradas. Para ello el procesador tiene 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 resultados 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)
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 reali-


zar las operaciones aritméticas (suma, resta, comparación, producto, cociente) y lógi-
cas (y, o, no, o exclusivo). Está formada por un conjunto de circuitos lógicos, el acumu-
lador 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


obligatoriamente uno de los operandos y el resultado de las operaciones. Los proce-
sadores más modernos no tienen un registro tan especializado, normalmente cual-
quier registro puede contener los operandos y los resultados de las operaciones.

25
Apuntes de Informática

Los códigos de condición (o flags de estado del programa), informan acerca de la


operación mas 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 operació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 segundo (zero) se activa cuando el
resultado es cero, por ejemplo al sumar 1001 con 0111. Finalmente el overflow es co-
mo el carry, pero para operandos con signo.

Todas las operaciones realizadas por la ALU se expresan en términos de un gran


numero 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 un contador de


programa (normalmente llamado PC), decodificador de instrucciones, un puntero de pila
(comúnmente llamado SP, en inglés Stack Pointer) y opcionalmente de un registro
índice. La unidad de control tiene así mismo algo muy necesario, que es el generador
de impulsos de reloj, encargado de sincronizar el funcionamiento del procesador.
Para ello se emplea 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 la frecuencia para medir la velocidad del procesador.
Para realizar cualquier operación, el procesador tiene unas tablas en las que se espe-
cifica los ciclos de reloj que dura, la unidad de control coloca los operandos necesa-
rios para la misma donde se necesiten y espera los ciclos que marca la tabla para dar
por concluida la misma.

Las funciones de la unidad de control son las de controlar el funcionamiento paso


a paso del procesador mientras este ejecuta cada una de las instrucciones de un pro-
grama. 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 pro-


grama que el procesador ejecuta en cada momento. Una vez que se ha tomado la ins-
trucción de la memoria principal se incrementa el contenido del contador del pro-

26
TEMA 2 – El procesador

grama. 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, esta 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 ejecuta-
da. Si para ejecutar la instrucción se precisa realizar alguna operación aritmética o
lógica se pasa el control a la ALU para que la realice. Después con el PC ya incremen-
tado empieza un nuevo ciclo para ejecutar la instrucción siguiente. Así pues el proce-
sador ejecuta los programas de modo secuencial, no obstante existen instrucciones
que permiten evitar esto, son las instrucciones de salto.

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 interrupció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 inde-


xado. Los modos de direccionamiento se verán más adelante en este mismo tema.

27
Apuntes de Informática

2.5. Un modelo de ordenador: Buses.

Hasta ahora nos hemos ocupado de cómo es el procesador por dentro. Veamos
ahora como 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 conjun-
to de patas en tres bloques: el bus de datos, el bus de direcciones y las señales de con-
trol. 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
memoria con la que quiere comunicarse. Cada posición tiene un número y depen-
diendo del número de hilos que compongan dicho bus el procesador podrá manejar
más o menos memoria. Aunque el bus de datos sea de más de 8 bits, por razones de
compatibilidad las posiciones de memoria se numeran de 8 en 8 bits. Análogamente
al bus de datos, por cada hilo del bus de direcciones 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.

28
TEMA 2 – El procesador

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


den observar 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 memo-
ria/Entrada-salida). Además la alimentación corresponde a las marcadas como VCC y
VSS es la masa de referencia, la entrada de reloj es la marcada como CLK2 y la pata de
interrupcciones es INTR.

Hay dos formas de acceder a 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 procesador con un determinado periférico. Los procesadores de Moto-
rola suelen funcionar de este modo. Por el contrario Intel en sus procesadores emplea
un espacio de entrada/salida separado, eso quiere decir que existe una señal de con-
trol 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 peri-
féricos se suelen llamar puertos.

29
Apuntes de Informática

Para acceder a los periféricos el procesador emplea 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ódica-
mente (por ejemplo cada centésima de segundo) se lee a través de un puerto
un registro de estado del teclado, que informa de si hay una tecla pendiente de
ser leída, en ese caso el procesador lee la tecla a través de otro puerto.

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


dido, para ello el procesador dispone una señal de control llamada INTR, que
debe ser usada en ese caso, existe además un controlador de interrupciones ex-
terno encargado de canalizar todas las posibles peticiones de interrupción.
Cuando se interrumpe al procesador, éste para lo que este haciendo y ejecuta
un programa de atención al periférico. Cuando acaba dicho programa, se
vuelve al estado anterior y se continúa lo que estuviera haciendo al ser inte-
rrumpido. 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
funciona de esta forma. Cada cierto tiempo (por ejemplo una centésima de se-
gundo) interrumpe al procesador y le fuerza a que ejecute un programa que se
encarga de incrementar 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


consecutivamente 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 controlador de DMA (acceso directo a memoria) que es capaz de
leer y escribir en memoria 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 el controlador de disquetes
para que lea el sector y se lo envíe al controlador de DMA. Por otra parte se
programa el controlador de DMA para decirle que la unidad de disquetes va a
enviarle 512 bytes que tiene que poner a partir de determinada posició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
controlador 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 escriben en lenguaje máquina o código máquina, siendo estas instrucciones desarro-
lladas en función de la arquitectura del ordenador. En consecuencia cada tipo de
procesador tiene su propio lenguaje máquina. Siendo generales las siguientes carac-
terísticas para todo lenguaje máquina:

30
TEMA 2 – El procesador

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 dedi-
cada 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áqui-


na. Los programas realizados específicamente para un procesador sólo pue-
den funcionar en él.

En los tiempos primitivos de los ordenadores, se escribía directamente en lengua-


je máquina, es decir, el programador debía mirar en unas tablas los códigos binarios
de cada instrucción e introducirlos de alguna forma en el ordenador. Pero los orde-
nadores son los aparatos ideales para realizar cosas como mirar en una tabla y tradu-
cir 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 des-
pués la CPU, es decir al código máquina.

Los operandos de las instrucciones en lenguaje máquina pueden estar en la me-


moria principal del ordenador, en registros, o en la propia instrucción. Los métodos
para especificar los operandos se conocen habitualmente como modos de direccio-
namiento, aunque haya casos en que no se empleen direcciones de memoria. Cada
procesador tiene sus propios modos de direccionamiento, por tanto aquí estudiare-
mos 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 refe-
rencia a operandos en la instrucción, y en los cuales los operandos se obtienen de la
memoria, considerando ésta como una pila. Por ello aquí nos limitaremos a conside-
rar el caso de operaciones con uno o dos operandos.

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


para la familia 80x86 (cada procesador tiene también su propio lenguaje ensambla-
dor), que hacen referencia a ningún, uno y dos operandos.

31
Apuntes de Informática

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


riantes que se admitan para el valor de I dependen de los modos de direc-
cionamiento 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 operan-
do en el que queda el resultado es el que se pone en segundo lugar, la que se ha
descrito es la emplean 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. Supondre-
mos que el procesador tiene un bus de datos de 16 bits, un bus de direcciones tam-
bién de 16 bits y registros de 16 bits llamados AX, BX, CX, DX, que son a su vez divi-
sibles 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 operandos, 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úme-
ros 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 contiene un operando que representa la dirección de memoria del da-


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

32
TEMA 2 – El procesador

nido de la posición baja 1234 va a la parte baja de AX: AL y el de la alta 1235 a AH,
hay otros procesadores que funcionan a la inversa).

33
Apuntes de Informática

DIRECCIONAMIENTO INDIRECTO

La instrucción contiene 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, enton-
ces 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 ejem-
plo supongamos 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 codificar 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 no-
sotros, 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 direc-


ció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 equivale a saltarse las instrucciones contenidas en ellos) y continue ejecutándo-
se a partir de la posición PC+25. La utilidad de esto es hacer programas reubicables,
si un programa 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 pu-
diera 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,

34
TEMA 2 – El procesador

sino que forman parte de un conjunto de registros de propósito general, es decir que
cualquier registro de propósito general se puede emplear para la tarea especifica de
registro acumulador u otro de los citados.

Algunos procesadores tienen hardware dedicado a realizar operaciones aritméti-


cas, como por ejemplo la multiplicación en coma flotante, en vez de realizarlo por
software, consiguiendo por tanto realizarlo en menos tiempo. Son pues más potentes
pero obviamente mas caros.

En el mundo de los ordenadores nos encontramos con máquinas dedicadas a ta-


reas especificas, que han visto mermado su campo de aplicación en aras de una ma-
yor 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 competitivas 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 ordenador de propósito general,
es menos efectivo para esa tarea concreta pero puede ser empleado también para
cualquier otra.

Por último conviene citar que existen dos filosofías a la hora de diseñar un proce-
sador 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, siendo todas ellas más sencillas, pero a cambio ganando velo-
cidad, ya que dedican más transistores a la parte de la ALU quitándolos de la parte
de control (CU). Los CISC por contra tienen un conjunto más amplio de instruccio-
nes, pero eso redunda en una pérdida de velocidad, 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 conseguir que las instruc-
ciones 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 compatibles
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.

35
Apuntes de Informática

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 regis-
tros de 8 bits de propósito general, más el contador de programa, puntero de pila y
registro de flags. Funcionaba a 2MHz.

El sucesor del 8080 fue el 8085 que casi no aportaba ninguna novedad con respec-
to 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 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 registros no tienen suficiente capacidad para contener una
dirección de memoria, emplea un modelo 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 pro-
cesador 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 desarrolla-
dos 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ácticamente 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 igua-
les que en los micros anteriores. También existió el 80188.

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


diados 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


direcciones de 24 bits (por lo que puede trabajar con una capacidad de memoria de
16Mb) y una velocidad 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

36
TEMA 2 – El procesador

funcionamiento, el modo protegido, 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 rea-
lizar 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 pro-
teger unas tareas de otras y conseguir por ejemplo que cada una no pueda escribir
más que en su propia memoria, o que si una aplicación se cuelga (es decir deja de fun-
cionar por alguna razón), eso no afecte al resto del sistema. En modo protegido ade-
má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 progra-
mas 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 programas en modo protegido. Además seguía empleando
segmentos de 64Kb, lo cual es tolerable en un micro como el 8086 pensado para la
monotarea, pero no lo es tanto en un micro como el 80286, y para colmo, el procesa-
dor 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 im-
pedí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
posteriormente 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 protegi-
do, único en el que se puede acceder a las mejoras de memoria se hizo más compati-
ble 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 modo real pudieran funcionar en un
submodo del modo protegido, el modo V86, pudiendo ejecutarse en multitarea va-
rios 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ásicamente el 386SX es un 386DX por dentro y un 80286 por fuera, es decir
tiene todas las características del 386DX, pero se ha reducido el bus de datos a 16 bits

37
Apuntes de Informática

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 co-
procesador 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 opera-
ciones en coma flotante, ya que el procesador sólo es capaz de operar con enteros, en
el caso del 486DX no era ya necesario, pues estaba incluido en el propio procesador.
La memoria caché era en este modelo casi imprescindible, era el primero que se acer-
caba 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 pro-
pio 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 redu-
cida 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óni-
mos sin el 2, pero internamente doblaban la velocidad del reloj, así el 486DX2-66 fun-
cionaba internamente 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 multiplica-
ban por 3 la frecuencia externa de funcionamiento, es decir un 486DX4-100 funciona-
ba 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.
Finalmente los últimos procesadores de Intel son los Pentium. En sus batallas le-
gales con Cyrix y AMD para que no pudieran usar el mismo nombre en los procesa-
dores 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áneamente 2 instrucciones por ciclo de reloj (es lo que
se llama superescalar) y diversas mejoras en el rendimiento, como predicción de sal-
tos, etc.

Actualmente los Pentium han dejado de fabricarse y existen en su lugar tres deri-
vados del Pentium: 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. El Pentium MMX, que incorpora 57 nue-
vas instrucciones que operan con varios enteros a la vez, utilizan para ello los 64 bits

38
TEMA 2 – El procesador

de la mantisa de los registros del coprocesador, que pueden dividir en 8 registros de


8 bits, 4 de 16 o 2 de 32 y operar simultáneamente con ellos. Finalmente el último de
la serie es el Pentium II, que es básicamente un Pentium Pro con instrucciones MMX.
De todos ellos el único que es posible emplear en un ordenador diseñado para un
Pentium es el Pentium MMX, ya que los otros emplean encapsulados distintos de los
del Pentium normal. El Pentium 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).

Todo lo anterior se puede resumir en la siguiente tabla.

Fecha Bus Memoria Memoria Transis-


micro Velocidad
introducción datos física virtual tores
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

A continuación se presenta una tabla de procesadores actuales con los datos más
básicos. Cada año se actualizarán bien con trabajos de los alumnos o con la incorpo-
ración a estos apunes de los procesadores incorporados al mercado.

Core Duo Yonah 64 64Gb 90 01-06 151M


Core 2 Duo Conroe 64 1Tb 65 07-06 291M
Core 2 Quad Kentsfield 64 1Tb 65 12-06 582M
Core 2 Duo Wolfdale 64 1Tb 45 01-08 410M
Core 2 Quad Yorkfield 64 1Tb 45 03-08 820M
Core i7 Bloomfield 64 24Gb 45 11-08 731M
Core i5,i7 Lynnfield 64 16Gb 45 09-09 774M
Core i3,i5 Clarkdale 64 16Gb 32 01-10 560M
Core i7 Gulftown 64 24Gb 45 03-10 1170M
Core i7 Sandy Bridge 64 8-32Gb 32 01-11 995M
Core i5 Sandy Bridge 64 32Gb 32 01-11 624M
Core i3,i5 Sandy Bridge 64 8-32Gb 32 01-11 504M
Core i5,i7 Ivy Bridge 64 32Gb 22 03-12
Core i3 Ivy Bridge 64 32Gb 22 09-12
Core i7 Sandy Bridge-E 64 64Gb 32 11-12
Core i5,i7 Haswell 64 32Gb 22 06-13

39
Apuntes de Informática

Core i3 Haswell 64 32Gb 22 09-13

Esquema del procesador i7:

40

También podría gustarte