- Memoria de
computadora - Microcontrolador
- Semiconductores
- Transistores
- Fabricación de
microprocesadores - Historia del
microprocesador - Tecnologías
futuras - El CPU como corazón de la
organización del computador - Ejecución de una
instrucción completa - Secuenciamiento de
señales de control - Registros del
procesador - Arquitectura
base - Tecnologías
Paralelas - Zócalo
- Anexos
Microprocesador, es un circuito
electrónico que actúa como unidad central de proceso de un ordenador,
proporcionando el control de las
operaciones de
cálculo. Los microprocesadores
también se utilizan en otros sistemas
informáticos avanzados, como impresoras,
automóviles o aviones. En 1995 se produjeron unos 4.000
millones de microprocesadores en todo el mundo.
El microprocesador
es un tipo de circuito sumamente integrado. Los circuitos
integrados, también conocidos como microchips o chips,
son circuitos
electrónicos complejos formados por componentes
extremadamente pequeños formados en una única pieza
plana de poco espesor de un material conocido como semiconductor.
Los microprocesadores modernos incorporan hasta 10 millones de
transistores
(que actúan como amplificadores electrónicos,
osciladores o, más a menudo, como conmutadores),
además de otros componentes como resistencias,
diodos, condensadores
y conexiones, todo ello en una superficie comparable a la de un
sello postal.
Un microprocesador consta de varias secciones
diferentes. La unidad aritmético-lógica
(ALU, siglas en inglés)
efectúa cálculos con números y toma
decisiones lógicas; los registros son
zonas de memoria
especiales para almacenar información temporalmente; la unidad de
control descodifica los programas; los
buses transportan información digital a través del
chip y de la
computadora; la memoria
local se emplea para los cómputos realizados en el mismo
chip. Los microprocesadores más complejos contienen a
menudo otras secciones; por ejemplo, secciones de memoria
especializada denominadas memoria cache, que sirven para
acelerar el acceso a los dispositivos externos de almacenamiento de
datos. Los
microprocesadores modernos funcionan con una anchura de bus de 64 bits (un bit es un
dígito binario, una unidad de información que puede
ser un uno o un cero): esto significa que pueden transmitirse
simultáneamente 64 bits de datos.
Un cristal oscilante situado en el ordenador proporciona
una señal de sincronización, o señal de
reloj, para coordinar todas las actividades del microprocesador.
La velocidad de
reloj de los microprocesadores más avanzados es de unos
300 megahercios (MHz) —unos 300 millones de ciclos por
segundo—, lo que permite ejecutar unos 1.000 millones de
instrucciones cada segundo.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Microprocesador
Como el microprocesador no es capaz por sí solo
de albergar la gran cantidad de memoria necesaria para almacenar
instrucciones y datos de programa (por
ejemplo, el texto de un
programa de tratamiento de texto), pueden emplearse transistores
como elementos de memoria en combinación con el
microprocesador. Para proporcionar la memoria necesaria se
emplean otros circuitos integrados llamados chips de memoria de
acceso aleatorio (RAM, siglas en
inglés), que contienen grandes cantidades de transistores.
Existen diversos tipos de
memoria de acceso aleatorio. La RAM estática
(SRAM) conserva la información mientras esté
conectada la tensión de alimentación, y suele
emplearse como memoria cache porque funciona a gran
velocidad. Otro tipo de memoria, la RAM dinámica (DRAM), es más lenta que la
SRAM y debe recibir electricidad
periódicamente para no borrarse. La DRAM resulta
más económica que la SRAM y se emplea como elemento
principal de memoria en la mayoría de las computadoras.
Un microprocesador no es un ordenador completo. No
contiene grandes cantidades de memoria ni es capaz de comunicarse
con dispositivos de
entrada —como un teclado, un
joystick o un ratón— o dispositivos de salida como
un monitor o una
impresora. Un
tipo diferente de circuito integrado llamado microcontrolador es
de hecho una computadora completa situada en un único
chip, que contiene todos los elementos del microprocesador
básico además de otras funciones
especializadas. Los microcontroladores se emplean en videojuegos,
reproductores de vídeo, automóviles y otras
máquinas.
Todos los circuitos integrados se fabrican con
semiconductores, sustancias
cuya capacidad de conducir la electricidad es intermedia entre la
de un conductor y la de un no conductor o aislante. El silicio es
el material semiconductor más habitual. Como la
conductividad eléctrica de un semiconductor puede variar
según la tensión aplicada al mismo, los
transistores fabricados con
semiconductores actúan como
minúsculos conmutadores que abren y cierran el paso de
corriente en sólo unos pocos nanosegundos
(milmillonésimas de segundo). Esto permite que un
ordenador pueda realizar millones de instrucciones sencillas cada
segundo y ejecutar rápidamente tareas
complejas.
El bloque básico de la mayoría de los
dispositivos semiconductores es el diodo, una unión de
materiales de
tipo negativo (tipo n) y positivo (tipo p). Los términos
"tipo n" y "tipo p" se refieren a materiales semiconductores que
han sido dopados, es decir, cuyas propiedades
eléctricas han sido alteradas mediante la adición
controlada de pequeñísimas concentraciones de
impurezas como boro o fósforo. En un diodo, la corriente
eléctrica sólo fluye en un sentido a
través de la unión: desde el material de tipo p
hasta el material de tipo n, y sólo cuando el material de
tipo p está a una tensión superior que el de tipo
n. La tensión que debe aplicarse al diodo para crear esa
condición se denomina tensión de
polarización directa. La tensión opuesta que hace
que no pase corriente se denomina tensión de
polarización inversa. Un circuito integrado contiene
millones de uniones p-n, cada una de las cuales cumple una
finalidad específica dentro de los millones de elementos
electrónicos de circuito. La colocación y
polarización correctas de las regiones de tipo p y tipo n
hacen que la corriente eléctrica fluya por los trayectos
adecuados y garantizan el buen funcionamiento de todo el
chip.
El transistor
empleado más comúnmente en la industria
microelectrónica se denomina transistor de efecto de campo
de metal-óxido-semiconductor (MOSFET, siglas en
inglés). Contiene dos regiones de tipo n, llamadas fuente
y drenaje, con una región de tipo p entre ambas, llamada
canal. Encima del canal se encuentra una capa delgada de
dióxido de silicio, no conductor, sobre la cual va
otra capa llamada puerta. Para que los electrones fluyan desde la
fuente hasta el drenaje, es necesario aplicar una tensión
a la puerta (tensión de polarización directa). Esto
hace que la puerta actúe como un conmutador de control,
conectando y desconectando el MOSFET y creando una puerta
lógica que transmite unos y ceros a través del
microprocesador.
Fabricación de
microprocesadores
Los microprocesadores se fabrican empleando técnicas
similares a las usadas para otros circuitos integrados, como
chips de memoria. Generalmente, los microprocesadores tienen una
estructura
más compleja que otros chips, y su fabricación
exige técnicas extremadamente precisas.
La fabricación económica de
microprocesadores exige su producción masiva. Sobre la superficie de
una oblea de silicio se crean simultáneamente varios
cientos de grupos de
circuitos. El proceso de
fabricación de microprocesadores consiste en una
sucesión de deposición y eliminación de
capas finísimas de materiales conductores, aislantes y
semiconductores, hasta que después de cientos de pasos se
llega a un complejo "bocadillo" que contiene todos los circuitos
interconectados del microprocesador. Para el circuito
electrónico sólo se emplea la superficie externa de
la oblea de silicio, una capa de unas 10 micras de espesor (unos
0,01 mm, la décima parte del espesor de un cabello
humano). Entre las etapas del proceso figuran la creación
de sustrato, la oxidación, la litografía, el grabado, la
implantación iónica y la deposición de
capas.
La primera etapa en la producción de un
microprocesador es la creación de un sustrato de silicio
de enorme pureza, una rodaja de silicio en forma de una oblea
redonda pulida hasta quedar lisa como un espejo. En la
actualidad, las obleas más grandes empleadas en la
industria tienen 200 mm de diámetro.
En la etapa de oxidación se coloca una capa
eléctricamente no conductora, llamada dieléctrico.
El tipo de dieléctrico más importante es el
dióxido de silicio, que se "cultiva" exponiendo la oblea
de silicio a una atmósfera de oxígeno
en un horno a unos 1.000 ºC. El oxígeno se combina
con el silicio para formar una delgada capa de óxido de
unos 75 angstroms de espesor (un angstrom es una
diezmilmillonésima de metro).
Casi todas las capas que se depositan sobre la oblea
deben corresponder con la forma y disposición de los
transistores y otros elementos electrónicos. Generalmente
esto se logra mediante un proceso llamado fotolitografía,
que equivale a convertir la oblea en un trozo de película
fotográfica y proyectar sobre la misma una imagen del
circuito deseado. Para ello se deposita sobre la superficie de la
oblea una capa fotosensible cuyas propiedades cambian al ser
expuesta a la luz. Los detalles
del circuito pueden llegar a tener un tamaño de
sólo 0,25 micras. Como la longitud de onda más
corta de la luz visible es de unas 0,5 micras, es necesario
emplear luz ultravioleta de baja longitud de onda para resolver
los detalles más pequeños. Después de
proyectar el circuito sobre la capa fotorresistente y revelar la
misma, la oblea se graba: esto es, se elimina la parte de la
oblea no protegida por la imagen grabada del circuito mediante
productos
químicos (un proceso conocido como grabado húmedo)
o exponiéndola a un gas corrosivo
llamado plasma en una cámara de vacío especial.
En el siguiente paso del proceso, la implantación
iónica, se introducen en el silicio impurezas como boro o
fósforo para alterar su conductividad. Esto se logra
ionizando los átomos de boro o de fósforo
(quitándoles uno o dos electrones) y lanzándolos
contra la oblea a grandes energías mediante un implantador
iónico. Los iones quedan incrustados en la superficie de
la oblea.
En el último paso del proceso, las capas o
películas de material empleadas para fabricar un
microprocesador se depositan mediante el bombardeo atómico
en un plasma, la evaporación (en la que el material se
funde y posteriormente se evapora para cubrir la oblea) o la
deposición de vapor químico, en la que el material
se condensa a partir de un gas a baja presión o
a presión atmosférica. En todos los casos, la
película debe ser de gran pureza, y su espesor debe
controlarse con una precisión de una fracción de
micra.
Los detalles de un microprocesador son tan
pequeños y precisos que una única mota de polvo
puede destruir todo un grupo de
circuitos. Las salas empleadas para la fabricación de
microprocesadores se denominan salas limpias, porque el aire de las
mismas se somete a un filtrado exhaustivo y está
prácticamente libre de polvo. Las salas limpias más
puras de la actualidad se denominan de clase 1. La
cifra indica el número máximo de partículas
mayores de 0,12 micras que puede haber en un pie cúbico de
aire (0,028 metros cúbicos). Como comparación, un
hogar normal sería de clase 1 millón.
El primer microprocesador fue el Intel 4004, producido
en 1971. Se desarrolló originalmente para una calculadora,
y resultaba revolucionario para su época. Contenía
2.300 transistores en un microprocesador de 4 bits que
sólo podía realizar 60.000 operaciones por segundo.
El primer microprocesador de 8 bits fue el Intel 8008,
desarrollado en 1979 para su empleo en
terminales informáticos. El Intel 8008 contenía
3.300 transistores. El primer microprocesador realmente
diseñado para uso general, desarrollado en 1974, fue el
Intel 8080 de 8 bits, que contenía 4.500 transistores y
podía ejecutar 200.000 instrucciones por segundo. Los
microprocesadores modernos tienen una capacidad y velocidad mucho
mayores. Entre ellos figuran el Intel Pentium Pro, con
5,5 millones de transistores; el UltraSparc-II, de Sun
Microsystems, que contiene 5,4 millones de transistores; el
PowerPC 620, desarrollado conjuntamente por Apple, IBM y
Motorola, con 7 millones de transistores, y el Alpha 21164A, de
Digital Equipment Corporation, con 9,3 millones de
transistores.
La tecnología de los
microprocesadores y de la fabricación de circuitos
integrados está cambiando rápidamente. En la
actualidad, los microprocesadores más complejos contienen
unos 10 millones de transistores. Se prevé que en el 2000
los microprocesadores avanzados contengan más de 50
millones de transistores, y unos 800 millones en el 2010. Las
técnicas de litografía también
tendrán que ser mejoradas. En el año 2000, el
tamaño mínimo de los elementos de circuito
será inferior a 0,2 micras. Con esas dimensiones, es
probable que incluso la luz ultravioleta de baja longitud de onda
no alcance la resolución necesaria. Otras posibilidades
alternativas son el uso de haces muy estrechos de electrones e
iones o la sustitución de la litografía óptica
por litografía que emplee rayos X de
longitud de onda extremadamente corta. Mediante estas
tecnologías, las velocidades de reloj podrían
superar los 1.000 MHz en el 2010. Se cree que el factor limitante
en la potencia de los
microprocesadores acabará siendo el comportamiento
de los propios electrones al circular por los transistores.
Cuando las dimensiones se hacen muy bajas, los efectos
cuánticos debidos a la naturaleza
ondulatoria de los electrones podrían dominar el
comportamiento de los transistores y circuitos. Puede que sean
necesarios nuevos dispositivos y diseños de circuitos a
medida que los microprocesadores se aproximan a dimensiones
atómicas. Para producir las generaciones futuras de
microchips se necesitarán técnicas como la
epitaxia por haz molecular, en
la que los semiconductores se depositan átomo a
átomo en una cámara de vacío ultraelevado, o
la microscopía de barrido de efecto túnel, que
permite ver e incluso desplazar átomos individuales con
precisión.
EL CPU COMO
CORAZON DE LA ORGANIZACIÓN DEL COMPUTADOR
ALGUNOS CONCEPTOS
FUNDAMENTALES
Las instrucciones que constituyen un programa que debe
ejecutar una computadora se cargan en localizaciones secuenciales
de su memoria principal. Para ejecutar este programa la CPU trae
una instrucción por vez y realiza las funciones
especificadas. Las instrucciones se traen por medio de
localizaciones efectivas de la memoria hasta la ejecución
de una ramificación o de una instrucción de salto.
La CPU lleva un control de la dirección de la localización de la
memoria de la siguiente instrucción, por medio del empleo
de un registro de la
CPU especial al que se denomina contador de programa (PC).
Después de traer una instrucción, el contenido del
PC se actualiza para apuntar a la siguiente instrucción de
la secuencia.
Considérese, para simplificar, que cada
instrucción ocupa una palabra de la memoria. Por lo tanto,
la ejecución de una instrucción requiere que la CPU
realice los siguientes tres pasos:
1 . Traer el contenido de la localización de la
memoria a la que apunte el PC. Interpretar el contenido de esta
localización como una instrucción que debe
ejecutarse. Por lo tanto, almacenarla en el registro de
instrucción (IR: Instruction Register). En forma
simbólica esto puede escribirse como:
IR [[PL]]
2. Incrementar el contenido del PC en l.
PC [PC] + I
3. Realizar las acciones
especificadas por la instrucción almacenada en el
IR.
Obsérvese que en aquellos casos en que una
instrucción ocupa más de una palabra, los pasos 1 y
2 pueden repetirse tantas veces como sea necesario para traer la
instrucción completa. Por lo general a estos dos pasos se
les conoce como fase de traída, mientras que el paso 3
constituye la fase de ejecución.
La estructura de las rutas principales de datos dentro
de la CPU: Los bloques de la CPU. Estos bloques pueden
organizarse e interconectarse de varias formas. Una de tales
organizaciones
se muestra en la
siguiente figura. En este caso, la unidad aritmética y
lógica (ALU) y todos los registros de la CPU están
conectados a través de un bus común. Desde luego,
este bus es interno y no debe confundirse con el bus externo, o
buses, que conectan a la CPU con la memoria y los dispositivos de
E/S. El bus externo de memoria se muestra en la siguiente figura
conectado con la CPU por medio de los registros de datos y de
dirección MDR y MAR. El número y funciones de los
registros del RO al R(n – 1) varían mucho de una
máquina a otra. Pueden ser para que el programador los
emplee en operaciones generales, pero algunos de ellos pueden ser
registros de aplicación especial, tales como registros
índice o apuntadores de pila.
Para ver el
gráfico seleccione la opción "Descargar" del
menú superior
Figura 1.: Organización de bus único para la
ruta de datos dentro de la CPU
Dos de los registros de la figura, los registros
Y Z, no se han mencionado. Estos registros son invisibles
para el programador; esto es, no necesita preocuparse de su
existencia, ya que nunca son referenciados en forma directa por
instrucción alguna. Sólo son utilizados por CPU
para almacenamiento temporal durante la ejecución de
ciertas instrucciones. Sin embargo, nunca se utilizan para
almacenar datos generados por una instrucción para que
luego los utilice otra instrucción.
Con pocas instrucciones, la mayor parte de las
operaciones de los pasos 1 al 3 mencionados antes pueden llevarse
a cabo con una o más de las siguientes funciones, en
alguna secuencia previamente especificada:
- Traer el contenido de una localización dada de
la memoria y cargarlo en un registro de la CPU. - Almacenar una palabra de datos proveniente de un
registro de la CPU en una localización de la memoria
dada. - Transferir una palabra de datos de un registro de la
CPU a otro o a la ALU. - Efectuar una operación aritmética o
lógica, y almacenar el resultado en un registro de la
CPU.
Ahora se examinará con cierto detalle la forma en
que cada una de las funciones anteriores se implanta en una
computadora común.
Traída de una palabra a partir de
la memoria
En una memoria de acceso aleatorio, la
información está almacenada en localizaciones
identificadas por sus direcciones. Para traer una palabra de
información de la memoria, la CPU tiene que especificar la
dirección de la localización de la memoria en donde
esta información está almacenada y solicitar una
operación de Leer. Esto se aplica si la información
que se va a localizar es una instrucción de un programa o
una palabra de datos (operando) especificada por una
instrucción. Entonces, para realizar la traída
desde la memoria, la CPU transfiere la dirección de la
palabra de información requerida al registro de
dirección en la memoria (MAR: memory address register).
Según se muestra en la figura anterior, el MAR está
conectado a las líneas de dirección del bus de
memoria. Por lo tanto, la dirección de la palabra
requerida se transfiere a la memoria principal. Mientras tanto,
la CPU utiliza las líneas de control de bus de memoria
para indicar que se requiere una operación de Leer. Lo
normal es que después de emitir esta solicitud, la CPU
espere hasta que reciba una respuesta de la memoria, que le
informe que la
función
solicitada se ha concluido. Esto se logra por medio del uso de
otra señal de control del bus de memoria, a la cual se
denominará Función de Memoria Completada (MFC). La
memoria pone esta señal en 1 para indicar que el contenido
de la localización especificada de la memoria se ha
leído y está disponible en las líneas de
datos del bus de memoria. Se considerará que en cuanto la
señal MFC sea igual a 1, la información que
está en las líneas de datos está cargada en
el MDR y por lo tanto está disponible para su uso dentro
de la CPU. Esto completa la operación de traída
desde la memoria. Como ejemplo, considérese que la
dirección de la localización de la memoria a la que
se vaya a efectuar el acceso está en el registro RI y que
los datos de la memoria deben cargarse en el registro R2. Esto se
logra por medio de la siguiente secuencia de
operaciones:
- MAR [R1]
- Leer
- Esperar la señal MFC
- R2 [MDR]
La duración del paso tres depende de la velocidad
de la memoria utilizada. Por lo general, el tiempo
necesario para leer una palabra de la memoria es más
prolongado que el tiempo requerido para realizar cualquier
operación única dentro de la CPU. Por lo tanto, el
tiempo general de la ejecución de una instrucción
puede disminuir si la secuencia de operaciones está
organizada de manera tal que otra función útil se
realice dentro de la CPU mientras espera que la memoria responda.
Resulta obvio que sólo las funciones que no requieran del
empleo del MDR o del MAR podrán realizarse durante este
tiempo. Tal situación se presenta durante la fase de
traída desde la memoria. Como pronto se verá, el PC
puede incrementarse mientras se espera que se complete la
operación de Leer. En el análisis anterior se ha presentado un
ejemplo de la forma en que la transferencia de datos entre dos
dispositivos puede tener lugar, en este caso la CPU y la memoria
principal. El mecanismo de transferencia en que un dispositivo
inicia la transferencia (solicitud de Leer) y espera hasta que el
otro dispositivo responda (señal MFC) se denomina
transferencia asíncrona. Puede verse con facilidad que
este mecanismo permite transferir datos entre dos dispositivos
independientes que tengan velocidades diferentes de
operación. Un esquema opcional que se encuentra en algunas
computadoras utiliza transferencias síncronas. En este
caso, una de las líneas de control del bus transporta los
pulsos de un reloj que funciona continuamente con una frecuencia
fija. Estos pulsos proporcionan señales
de temporización a la CPU y a la memoria principal. En
cada ciclo del reloj se completa una operación de la
memoria. Además los instantes en que la dirección
se coloca en las líneas de dirección y los datos se
cargan en el MDR son fijos en relación con los pulsos del
reloj. El esquema de bus síncrono lleva a un implante
más simple. Sin embargo, no puede aceptar dispositivos de
velocidades muy variadas, si no se reduce la velocidad de todos
los dispositivos a la del más lento. En el resto del
análisis de la operación de la CPU, se
considerará que se emplea un bus de memoria
asíncrono.
Almacenamiento de una palabra en la
memoria
El procedimiento
para escribir una palabra en una localización dada de la
memoria es semejante al empleado para leer de la memoria. La
única excepción es que la palabra de datos que se
va a escribir se carga en el MDR antes de que se emita el comando
Escribir. Si se considera que la palabra de datos que se va a
almacenar en la memoria está en R2, y que la
dirección de la memoria está en R1, la
operación de Escribir requiere la siguiente
secuencia:
- MAR [R1]
- MDR [R2]
- Escribir
- Esperar la señal MFC
Es interesante observar que los pasos 1 y 2 son
independientes. Por lo tanto, pueden llevarse a cabo en cualquier
orden. En realidad, pueden efectuarse de manera
simultánea, si la arquitectura de
la computadora lo permite, esto es, si las dos transferencias no
utilizan la misma ruta de datos. Desde luego, esto no
sería posible en la
organización de bus único de la figura
anterior. Obsérvese también que, como en el caso de
la operación de Leer, el periodo de espera del paso 4
puede encimarse con otras operaciones, siempre y cuando tales
operaciones no utilicen los registros MDR o MAR.
Transferencias entre
registros
Para permitir la transferencia de datos entre varios
bloques conectados al bus común de la figura anterior,
debe haber manejo de entrada y salida por compuerta. Esto
está representado de manera simbólica en la figura
siguiente (2). Las compuertas de entrada y salida del registro Ri
están controladas por las señales
Rientrada y Risalida, respectivamente.
Entonces, cuando el registro Rientrada es igual a 1,
los datos disponibles en el bus común se cargan en Ri. De
manera semejante, cuando Risalida es igual a l, el
contenido del registro Ri se coloca en el bus. Mientras el
Risalida es igual a 0, el bus puede utilizarse para
transferir datos de otros registros.
Ahora se examinará la transferencia de datos
entre dos registros. Por ejemplo, para transferir el contenido
del registro Rl al registro R4, se necesitan las siguientes
acciones:
- Habilitar la compuerta de salida del registro R1
poniendo R1salida en 1 . Esto coloca el contenido de
R1 en el bus de la CPU. - Habilitar la compuerta de entrada del registro R4
poniendo R4entrada en 1. Esto carga los datos
provenientes del bus de la CPU en el registro R4.
Esta transferencia de datos puede representarse en forma
simbólica
R1salida, R4entrada
Realización de una operación
aritmética o lógica
Al realizar una operación aritmética o
lógica, debe recordarse que la ALU es en sí misma
un circuito combinatorio que no tiene almacenamiento interno. Por
lo tanto, para realizar una adición, por ejemplo, los dos
números que se van a sumar deben estar listos en las dos
entradas de la ALU simultáneamente. Se proporciona con
este fin el registro Y de la figura anterior (1) que se utiliza
para contener uno de los dos números, mientras que el otro
es manejado por compuerta hacia el bus. El resultado se almacena
en forma temporal en el registro Z. Por lo tanto, la secuencia de
operaciones para sumar el contenido del registro R1 con el del
registro R2 y almacenar el resultado en el registro R3 debe ser
la siguiente:
PASO | ACCIÓN |
1 | R1salida |
2 | R2salida , Add , |
3 | Zsalida , |
En el paso 2 de esta secuencia el
contenido del registro R2 se maneja por compuerta hacia el bus;
de allí, a la entrada B de la ALU que está
conectada directamente con el bus. El contenido del registro Y
siempre está disponible en la entrada A. La función
realizada por la ALU depende de las señales aplicadas a
las líneas de control de la ALU. En este caso, la
línea Suma se iguala a 1, provocando que la salida de la
ALU sea la suma de los dos números en A y B. Esta suma se
carga en el registro Z ya que su compuerta de entrada está
abierta (Zentrada). En el tercer paso, el contenido
del registro Z se transfiere al registro destino R3. Es obvio que
esta última transferencia no puede realizarse durante el
segundo paso, ya que sólo una salida de registro puede
conectarse en forma significativa al bus en cualquier momento
dado.
Manejo de registros por compuerta y
temporización de transferencias de datos
Antes de proceder a analizar la ejecución de
instrucciones de máquina, es necesario detenerse
brevemente para presentar algunos de los detalles necesarios del
implante para el manejo de datos por compuerta hacia y desde el
bus común de la figura 1. También se
presentará una breve panorámica de la
temporización requerida para el control de señales
que estén involucradas en la transferencia de datos entre
registros.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Supóngase que cada bit de los registros de las
figuras 1 y 2 consiste en el seguro simple
mostrado en la figura 3. Se considera que el elemento de
almacenamiento mostrado es uno de los bits del registro Z.
Mientras que el control de entrada Zentrada es igual a
1, el estado del
seguro cambia para que corresponda con los datos del bus.
Siguiendo el cambio de 1 a
0 en la entrada Zentrada, los datos almacenados en el
seguro inmediatamente antes de este cambio se aseguran hasta que
Zentrada sea de nuevo igual a 1. Entonces, las dos
compuertas de entrada del seguro implantan la función de
interruptor de control de entrada de la figura 2.
Figura 2.: Manejo por compuerta de entrada y salida
para los registros de la figura 1
Si se examinan los interruptores de salida de la figura
2 se muestra que, en el caso ideal, deben ser interruptores
mecánicos de ENCENDIDO/APAGADO. Cuando un interruptor dado
está ENCENDIDO, transfiere el contenido de su registro
correspondiente al bus. Cuando se encuentra APAGADO, está
desconectado eléctricamente del bus. Esto es, no pone al
bus en estado
específico alguno, permitiendo así que otro
registro coloque datos en el bus. Por lo tanto, la salida de la
combinación del registro con el interruptor puede ser en
uno de los tres estados: 1,0 ó circuito
abierto.
En los implantes reales, los interruptores
mecánicos resultan incompatibles con la tecnología
electrónica empleada en computadoras en
términos de velocidad de operación y de otras
características. En su lugar la compuerta de salida de un
registro que transfiere el contenido de ese registro al bus
común se diseña para que se comporte de la misma
forma que un interruptor mecánico. Esto es, es capaz de
estar eléctricamente desconectada del bus.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 3.: Entrada y salida manejadas por compuerta para
un bit de registro
Es capaz de colocar ya sea un cero o un uno en el bus
cuando sea necesario. Debido a estas tres posibilidades, se dice
que tal compuerta tiene una salida de tres estados. Se utiliza
una entrada separada de control, tanto para habilitar la salida
por compuerta, como para ponerla en un estado de alta impedancia
(desconectada eléctricamente). Este último estado
corresponde al de circuito abierto de un interruptor
mecánico.
Debe observarse que ni los circuitos de compuerta
lógica TTL, ni los CMOS son adecuados para la
conexión directa con un bus. Conectar las salidas de dos
de tales circuitos en paralelo provoca un corto circuito, lo que
provocaría operación inadecuada o aun daño a
las compuertas involucradas.
Un diseño
optativo para el bus común de la figura 2 que no requiere
de los interruptores de salida, utilizaría compuertas de
colector abierto (para bipolar) o de drenaje abierto (para MOS).
La salida de tal compuerta es equivalente a un interruptor a
tierra. El
interruptor está abierto cuando la salida de compuerta se
encuentra en el estado 1 , y cerrado cuando se encuentra en 0. La
estructura de un bus de colector abierto está representada
simbólicamente en la figura 4. Cuando no está
trabajando, el bus se mantiene en uno debido al resistor de
"jalón hacia arriba" mostrado. Entonces, siempre y cuando
todos los interruptores de salida de compuerta estén
abiertos, esto es, todas las salidas estén en el estado 1,
el bus también. Si cualquier salida de compuerta cambia a
0, el interruptor correspondiente de salida se cierra y el bus es
"empujado hacia abajo" al estado 0. En otras palabras, el bus
realiza una función AND en todas las salidas de compuerta
conectadas con él. Algunas veces a esto se le conoce como
conexión de "AND – cableado". Si se utiliza este arreglo
de manejo por compuerta, la compuerta de salida de tres estados
de la figura 3 puede reemplazarse por una compuerta de colector
abierto NAND, según se muestra. Cuando Zsalida
está alto (1), el bit almacenado en el seguro se alimenta
al bus. Cuando Zsalida está bajo (0), el bus se
deja en el estado 1 ocioso, permitiendo que los datos
provenientes de otros registros se transfieran al bus.
En general, el diseño de tres estados permite
transferencias de datos más veloces en comparación
con el enfoque de colector abierto de drenaje abierto. Por esta
razón su uso en el diseño de buses es mucho
más común. La principal característica
distintiva de un bus de colector abierto es su capacidad de AND –
cableado, por lo tanto el arreglo de colector abierto se utiliza
principalmente para líneas de buses en donde se requiera
esta capacidad. Por ejemplo, a menudo se emplea en líneas
de solicitud de interrupción.
Ahora se analizarán algunos aspectos de la
temporización de transferencias de datos dentro de la
CPU.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 4.: estructura de bus de
colector abierto
Por ejemplo, considérese la operación de
adición del paso 2 del almacenamiento de una palabra en la
memoria. A partir del momento en que la señal
R2salida es igual a 1, hay un retraso temporal para
que la compuerta se abra y para que después los datos
viajen a través del bus hasta la entrada de la ALU. Los
circuitos sumadores de la ALU provocan un retraso más.
Para que el resultado se almacene en la forma adecuada en el
registro Z, los datos deben mantenerse en el bus durante un
periodo adicional igual al tiempo de preparación y de
espera de este registro. Esta situación se muestra en el
diagrama de
temporización de la figura 5. La suma de los cinco tiempos
de retraso define la duración mínima de la
señal R2salida
La organización de bus único de la figura
1 representa sólo una de las posibilidades para
interconectar distintos bloques de la CPU. Un arreglo alternativo
es la estructura de dos buses mostrada en la figura 6. Todas las
salidas de los registros están conectadas al bus A y todas
las entradas de los registros están conectadas al bus B.
Los dos buses están conectados a través del enlace
de buses G, el cual, al habilitarse, transfiere los datos
contenidos en el bus A al bus B. Cuando se deshabilita G, los dos
buses están eléctricamente aislados.
Obsérvese que el registro de almacenamiento temporal Z de
la figura 1 no es necesario en esta organización debido a
que, con el enlace de bus inhabilitado, la salida de la ALU puede
transferirse en forma directa al registro destino. Por ejemplo,
la operación de adición analizada antes (R3
[R1] + [R2]) ahora puede efectuarse de la siguiente
forma:
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 5.: Temporización de las
señales de control durante el paso de Suma
Es importante observar que si los registros son seguros simples
como el de la figura 4.3, el registro destino de la secuencia
anterior debe ser diferente de R2, debido a que las dos
operaciones R2entrada y R2salida no pueden
realizarse al mismo tiempo. Esto se debe a que la ALU es una red combinatoria. Por lo
tanto, carece de almacenamiento interno. Sin embargo, aún
así es posible realizar la operación R2
[R1] + [R2], intercambiando R1salida y
R2salida y reemplazando R3entrada por
R2entrada en el paso 2. La restricción de que
R2salida y R2entrada no puedan realizarse
en el mismo paso puede atemperarse con el empleo de flip-flops
disparados por flanco. Si hay uso de flip flops disparados por
flanco, la temporización de una transferencia de registros
que involucre a R2 permanece esencialmente igual que la de la
figura 5, con Zentrada reemplazado por
R2entrada. En este caso R2entrada
representa la entrada de reloj al registro, la cual se considera
como disparada por flanco negativa. La salida de R2 permanece sin
cambio hasta t2, momento en el que los datos
disponibles en el bus de entrada se cargan en R2.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 6.: Estructura de dos
buses
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 7.: Estructura de tres
buses
Considérese un ejemplo más de
organización de la CPU. En la figura 7 se muestra una
arquitectura de tres buses, con cada bus conectado sólo a
una salida y a varias entradas. Al eliminar la necesidad de
conectar más de una salida al mismo bus se logran
transferencias más rápidas de bus en forma simple.
Se proporciona un multiplexor en la entrada de cada uno de los
dos registros de trabajo A y
13, lo cual permite que se carguen ya sea del bus de datos de
entrada o del bus de datos de registro.
Los registros de aplicación general de la CPU de
la figura 7 se muestran como un solo bloque. Se considera que
están implantados utilizando una unidad de memoria de
acceso aleatorio (RAM: Random-access
memory). Debe enfatizarse que en este contexto el término
RAM simplemente se refiere al tipo de hardware utilizado para
implantar los registros y no debe confundirse con la RAM que
constituye la memoria principal de la computadora. Esta
última está conectada al bus externo.
EJECUCIÓN
DE UNA INSTRUCCIÓN COMPLETA
Ahora se intentará conjuntar la secuencia de
operaciones elementales necesarias para ejecutar una
instrucción. Considérese la instrucción
"Sumar el contenido de la localización NUM de la memoria
al registro R1". Para simplificar las cosas, la dirección
NUM se da en forma explícita en el campo de
dirección de la instrucción. Entonces, la
localización NUM se especifica en el modo directo de
memoria. La ejecución de esta instrucción requiere
de las siguientes acciones.
- Traer la instrucción
- Traer el primer operando (el contenido de la
localización de la memoria a la que señala el
campo de dirección de la
instrucción). - Realizar la adición
- Cargar el resultado en RI.
PASO | ACCION |
1 | PCsalida, MARentrada, Leer, Borrar Y, Fijar el |
2 | Zsalida, PCentrada, Espera a MFC |
3 | MDRsalida, IRsalida |
4 | Campo de dirección de IRsalida, MARentrada, |
5 | R1salida, Yentrada, Espera a MFC |
6 | MDRsalida, Suma, Zentrada |
7 | Zsalida, R1entrada |
8 | Fin |
Figura 8.: Secuencia de control para
la ejecución de la instrucción "Sumar el contenido
de la localización direccionada de la memoria en el modo
directo de la memoria al registro R1".
En la figura 8 se da la secuencia de pasos de control
necesarios para implantar las operaciones anteriores en la
estructura de bus único de la figura 1. Entonces, la
ejecución de instrucción sucede de la siguiente
forma. En el paso 1 la operación de traída de la
instrucción se inicia cargando el contenido del PC en el
MAR y enviando una solicitud de Leer a la memoria. A1 mismo
tiempo se incrementa el PC en 1 a través del uso de la
ALU. Esto se logra poniendo una de las entradas a la ALU
(registro Y) en 0 y la otra entrada (bus de la CPU) en el
valor presente
que contenga el PC. Al mismo tiempo el acarreo a la ALU se iguala
a 1 y se especifica una operación de Sumar.
El valor actualizado se regresa del registro Z al PC
durante el paso dos. Obsérvese que el paso dos se inicia
inmediatamente después de emitir la solicitud de Leer de a
memoria, sin necesidad de esperar la conclusión de la
función de la memoria. Sin embargo, el paso 3 tiene que
retardarse hasta que se reciba el MFC. En el paso 3, a palabra
traída de la memoria se carga en el IR (registro de
instrucción: instruction register). Los pasos del 1 al 3
constituyen la fase de traída de instrucción de la
secuencia de control. Desde luego, esta parte es la misma para
todas las instrucciones.
En cuanto el IR está cargado, el circuito de
decodificación de instrucción interpreta su
contenido. Esto permite a la circuitería de control elegir
las señales adecuadas para la parte restante de la
secuencia de control, pasos 4 a 8, a los que se considera como la
fase de ejecución. En el paso 4, el campo de
dirección del IR que contiene la dirección NUM, es
manejado por compuerta y se lleva al MAR y se inicia una
operación de Leer de la memoria. Después el
contenido de la memoria R1 se transfiere al registro Y. Cuando se
completa la operación de Leer, el operando de la memoria
está disponible en el registro MDR. La operación de
adición se realiza en el paso 6 y el resultado se
transfiere a R1 en el paso 7. La señal de Fin, paso 8,
indica la conclusión de la ejecución de la presente
instrucción y provoca que se inicie un nuevo ciclo de
traída regresando de nuevo al paso 1.
Las ramificaciones se logran reemplazando el contenido
actual del PC por la dirección de ramificación,
esto es, la dirección de la instrucción a la cual
se refiere una ramificación. Por lo común, la
dirección de ramificación se obtiene sumando al
valor actual del PC, un valor X de compensación, el cual
está dado en el campo de dirección de la
instrucción de ramificación. En la figura 9 se
proporciona una secuencia de control que permite la
ramificación de control incondicional utilizando la
organización de bus único de la figura 1. Como de
costumbre, la ejecución se empieza con la fase de
traída y termina cuando la instrucción se carga en
el IR en el paso 3. Para ejecutar la instrucción de
ramificación, el contenido del PC se transfiere al
registro Y en el paso 4. Después el valor de
compensación X se envía por compuerta al bus y se
realiza la operación de adición. El resultado, que
representa la dirección de ramificación, se carga
en el PC en el paso 6.
PASO | ACCION |
1 | PCsalida, MARentrada, Leer, Borrar Y, Fijar el |
2 | Zsalida, PCentrada, Espera a MFC |
3 | MDRsalida, IRsalida |
4 | PCsalida, Yentrada |
5 | Campo de dirección de IRsalida, Suma, |
6 | Zsalida, PCentrada |
7 | Fin |
Figura 9.: Secuencia de control para
la ejecución de una instrucción de
ramificación incondicional.
Es importante observar que en este ejemplo el PC se
incrementa durante la fase de traída, sin importar el tipo
de instrucción que se esté ejecutando. Así,
en el momento en que el valor de compensación X se suma al
contenido del PC, pasos 4 y 5 de la figura 9, este contenido ya
se ha actualizado para que apunte a la instrucción que
sigue en el programa a la instrucción de
Ramificación. Por lo tanto, el valor de
compensación X debería ser la diferencia entre la
dirección de ramificación y la dirección que
sigue de inmediato a la instrucción de
Ramificación. Por ejemplo, si la instrucción de
Ramificación está en la localización 1000 y
se requiere ramificar a la localización 1050, el valor de
X debería ser de 49.
Considérese ahora 1 caso de una
ramificación condicional, en vez de una
ramificación incondicional. La única diferencia
entre este caso y el de la figura 9 es el de la necesidad de
verificar el estado de los códigos de condición
entre los pasos 3 y 4.Por ejemplo, si la circuitería de
decodificación de instrucción interpreta el
contenido del IR como una instrucción de
Ramificación en caso negativo (BRN: Branch on Negative),
la unidad de control opera de la siguiente forma: primero, se
verifica el registro de código
de condición. Si el bit N (negativo) es igual a 1, la
unidad de control procede a los pasos del 4 al 7 como en la
figura 9. Por otra parte, si N es igual a 0 se emite una
señal de Fin. En realidad, esto concluye la
ejecución de la instrucción de Ramificación
y provoca que la instrucción inmediata del programa se
traiga, cuando se realice una nueva operación de traer.
Por lo tanto, la secuencia de control para la secuencia de
Ramificación condicional BRN puede obtenerse a partir de
la figura 4.9 reemplazando el paso 4 por:
4 | If then End |
| If N then PCsalida, |
SECUENCIAMIENTO DE SEÑALES DE
CONTROL
Para ejecutar instrucciones, la CPU debe disponer de
algún medio para generar en la secuencia adecuada las
señales de control analizadas antes. Los
diseñadores de computadoras han utilizado una amplia
variedad de técnicas para resolver este problema. Sin
embargo, la mayoría de estas técnicas caen en una
de las dos categorías:
- Control fijo
- Control microprogramado
En esta sección se analiza el control fijo
(cableado permanente), seguido por una breve introducción al control microprogramado.
Este último se analizará en detalle en el
capítulo cinco.
Considérese la secuencia de señales de
control dada en la figura 8. Resulta obvio que se requieren ocho
lapsos que no se encimen para la ejecución adecuada de la
instrucción representada por esta secuencia. Cada lapso
debe tener una duración suficiente al menos para que
sucedan las funciones especificadas en el paso correspondiente.
Por el momento, considérese que todos los lapsos son de
igual duración. Por lo tanto, es posible implantar el
control necesario con el empleo de un contador manejado por un
reloj, según se muestra en la figura 10. Cada estado o
cuenta de este contador corresponde a uno de los pasos de las
figuras 8 y 9. Por lo tanto, las señales de control
necesarias están determinadas en forma única por la
siguiente información:
- Contenido del contador de control
- Contenido del registro de
instrucción - Contenido del código de condición y de
otras banderas de condición
El término banderas de condición indica
aquellas señales que representan el estado de las
diferentes secciones de la CPU y de las distintas líneas
de control conectadas con ella, tales como la señal de
condición del MFC de la figura 8.
A fin de lograr cierto conocimiento
de la estructura interna de la unidad de control se
empezará dando una visión simplificada del hardware
relacionado con ella.
El bloque decodificador-codificador de la figura 10 es
simplemente un circuito combinatorio que genera las salidas de
control necesarias, dependiendo del estado de todas sus entradas.
Al separar las funciones de decodificación y codificación se obtiene el diagrama de
bloque más detallado de la figura 11. El paso
decodificador proporciona una línea separada de
señal para cada paso, o lapso, en la secuencia de control.
De manera semejante, la salida del decodificador de
instrucción consiste en una línea separada para
cada instrucción de máquina. Esto es, para cada
instrucción cargada en el IR, una de las líneas de
salida de la INSl a INSm, se iguala a 1 y
todas las otras líneas a 0.
Todas las señales de entrada al bloque de
codificación de la figura 11 deben combinarse para que
generen las señales individuales de control
Yentrada, PCsalida, Suma, Fin, etc. La
estructura del codificador está ejemplificada por el
circuito dado en la figura 12. Este circuito es un implante de la
función lógica
Zentrada = T1 + T2
ADD + T5 BR + …
Esto es, la señal de control Zentrada,
que habilita la entrada al registro Z, se enciende, ON, durante
el lapso T1 sin importar la instrucción,
durante T6 para una instrucción ADD, y
así sucesivamente. Esta parte de la función
Zentrada ha sido compilada a partir de las secuencias
de control de las figuras 8 y 9. El término T, es
común a todas las instrucciones ya que ocurre durante la
fase de traída. De manera semejante, la señal de
control Fin, figura 13, se genera a partir de la función
lógica
Fin = T8 ADD + T7 BR + (T7 N
+ T4 ) BRN + …
En la figura 11 se muestra la forma en que es posible
utilizar la señal Fin para iniciar un nuevo ciclo de
traída de instrucción, poniendo el contador de paso
de control en su valor inicial.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 10.: Organización de la
unidad de control
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 11.: Separación de las
funciones de decodificación y
codificación
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 12.: Generación de la
señal de control Zentrada
Las señales MFC y WMFC (Wait for, MFC:
espera a MFC) requieren de algunas consideraciones especiales. La
señal misma WMFC puede generarse de la misma forma que las
otras señales de control, utilizando la ecuación
lógica.
WMFC = T2 + T5 ADD +
…
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 13.: Generación de la
señal de control Fin
El efecto que se desea con esta señal es retrasar
el inicio del siguiente paso de control hasta que no se reciba la
señal MFC de la memoria principal. Esto puede lograrse
inhibiendo el avance del contador de paso de control durante el
periodo requerido. Considérese que el contador de paso de
control está regido por una señal llamada RUN.
(Corrida)
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 14.: Control de la
temporización de la CPU
El contador avanza un paso en cada pulso de reloj
sólo si la señal RUN es igual a 1 . El circuito de
la figura 14a logrará el control deseado. En cuanto la
señal WMFC se genera, RUN se vuelve igual a 0. Entonces,
el conteo se inhibe y ningún cambio de señal tiene
lugar. La CPU permanece en este estado de espera hasta que la
señal MFC se activa y el contador de paso de control se
habilita de nuevo. E1 siguiente pulso de reloj incrementa el
contador, lo cual da como resultado que la señal WMFC se
iguale de nuevo a cero.
El circuito simple de la figura 14a origina un
importante problema. La señal MFC es generada por la
memoria principal, cuya operación es independiente del
reloj de la CPU. Por lo tanto, MFC es una señal
asíncrona que puede llegar en cualquier momento a ese
reloj. Sin embargo, el funcionamiento adecuado de la
circuitería de la CPU, incluyendo el contador de paso de
control, requiere que todas las señales de control tengan
tiempos de preparación y de espera con relación al
reloj, según se ilustró en la figura 5. Por lo
tanto, la señal MFC debe estar sincronizada con el reloj
de la CPU antes de ser utilizada para producir la señal
RUN. Para este fin puede utilizarse un flip-flop, según se
muestra en la figura 14b. La salida de este flip-flop que se
considera como disparada por flanco negativo, cambia en el
extremo descendente de CLK. Esto deja suficiente tiempo para que
la señal RUN se ponga antes del siguiente flanco
ascendente del CLK el cual avanza al contador. Un diagrama de
temporización para una operación de traída
de instrucción se da en la figura 15. En esta figura, se
ha considerado que la memoria principal tendrá alta la
señal MFC hasta que descienda la señal de Leer,
indicando que la CPU ha recibido los datos.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 15.: Temporización de las
señales de control durante la traída de
instrucciones
El análisis anterior ha presentado una
visión simplificada de la forma en la cual puede generarse
la secuencia de señales de control necesaria para traer y
ejecutar instrucciones. La organización general
representada en las figuras 10 y 11, junto con los diagramas de
circuito de las figuras de la 12 a la 14, representa un enfoque
que permite la implantación de un conjunto arbitrario de
instrucciones. Ahora se considerarán algunos aspectos
prácticos de la realización de tal
circuitería.
Por necesidad, el enfoque empleado en un sistema digital
debe tener en cuenta las capacidades y limitaciones de la
tecnología del implante elegido. Los circuitos de las
figuras 12 y 13 son fáciles de comprender y de
diseñar. Sin embargo, es fácil apreciar que el
número de compuertas lógicas necesarias para ello y
la complejidad del cableado hacen que este enfoque directo
resulte poco práctico. El implante de las computadoras
modernas se basa en el empleo de la tecnología VLSI. En
VLSI, estructuras
que abarcan patrones regulares de interconexión resultan
mucho más fáciles de implantar que las conexiones
aleatorias empleadas en los circuitos anteriores. Tales
estructuras son arreglos lógicos programables (PLA:
Programable logic array). Según se describe en el
apéndice A, un PLA consiste en un arreglo de compuertas
AND seguido por un arreglo de compuertas OR. Puede utilizarse
para implantar funciones lógicas combinatorias de varias
variables.
Todo el bloque de codificador – decodificador de la figura 10
puede implantarse bajo la forma de un solo PLA. Entonces, la
sección de control de una CPU, o para este caso, de
cualquier sistema digital puede organizarse según se
muestra en la figura 16.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 16.: Implante de un controlador
de secuencia en un chip VLSI
Antes de concluir el análisis de los
controladores fijos, resulta conveniente hacer unos cuantos
comentarios. Hasta ahora se ha supuesto que todos los pasos de
control suceden en lapsos iguales. Esto lleva a implantar un
contador de condición manejado por un reloj. Resulta
fácil apreciar que este enfoque no es muy eficiente en lo
referente al uso de la CPU, ya que no todas las operaciones
requieren del mismo tiempo. Por ejemplo, por lo general una
transferencia simple de registro es mucho más
rápida que una operación que incluya adición
o sustracción. Es posible, al menos en teoría,
construir una unidad de control asíncrona por completo. En
este caso, el reloj estaría reemplazado por un circuito
que haría avanzar el contador de paso en cuanto se
concluya cada paso. En tal enfoque el problema principal es la
incorporación de algunos medios
confiables de detectar la conclusión de varias
operaciones. Según resulta el retraso de
propagación en muchos casos es una función, no
sólo de las compuertas utilizadas, sino también de
los datos específicos que se estén
procesando.
Sin embargo, es posible efectuar algunos arreglos. Por
ejemplo, puede establecerse una retraso máximo para cada
operación y las señales de temporización
pueden generarse con esa base. También es posible utilizar
relojes separados para subsecciones individuales de un circuito.
La
comunicación entre varias subsecciones puede entonces
realizarse en forma asíncrona, de una manera muy parecida
a la de las transferencias de datos entre la CPU y la memoria
principal.
Todas las señales de control requeridas dentro de
la CPU pueden generarse utilizando un contador de estado y un
circuito PLA. Se analizará un enfoque alternativo que se
utiliza mucho en el diseño de computadoras. Primero se
presentarán algunos términos utilizados con
frecuencia.
Se empezará por definir palabra de control (CW:
control word) como una
palabra cuyos bits individuales representan las diferentes
señales de control de la figura 11. Por lo tanto, cada uno
de los pasos de control de la secuencia de control de una
instrucción define una combinación única de
unos y ceros en la CW. Por ejemplo, las CW correspondientes a los
pasos 5, 6 y 7 de la figura 8 son como se muestran en la figura
17. Una secuencia de CW correspondientes a la secuencia de
control de una instrucción de máquina constituye el
microprograma para esa instrucción. Las palabras
individuales de control en este microprograma por lo general se
denominan microinstrucciones.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 17.: Ejemplo de
microinstrucciones para la Figura 8
Considérese que los microprogramas
correspondientes al conjunto de instrucciones de una computadora
están almacenados en una memoria especial a la que se
denomina la memoria de microprograma. La unidad de control puede
generar las señales de control para cualquier
instrucción, leyendo en forma secuencial las CW del
microprograma correspondiente en la memoria de microprograma.
Esto sugiere organizar la unidad de control según se
muestra en la figura 18. Para leer en forma secuencial las
palabras de control a partir de la memoria de microprograma se
emplea un contador de microprograma ( PC). El bloque
etiquetado "generación de dirección inicial" es
responsable de la carga de la dirección inicial del
microprograma en el PC cada vez que se carga una nueva
instrucción en el IR. Después, el PC es
incrementado en forma automática por el reloj, provocando
que se lean microinstrucciones sucesivas de la memoria. Por lo
tanto, las señales de control serán entregadas a
las diferentes partes de la CPU en la secuencia
correcta.
Hasta el momento no se ha analizado una importante
función de la unidad de control y, en realidad, no se la
puede implantar por medio de la organización simple de la
figura 18. Esta es la situación que surge cuando se
requiere que la unidad de control verifique el estado de los
códigos de condición o banderas de
condición, a fin de elegir entre cursos alternativos de
acción.
Se ha visto que en el caso de control fijo, esta situación
se maneja incluyendo una función lógica adecuada,
como en la ecuación "Fin = T8 ADD + T7
BR + (T7 N + T4 ) BRN + …", en la
circuitería de codificación. Otro enfoque diferente
que se utiliza con frecuencia con el control microprogramado se
basa en la introducción del concepto de
ramificación condicional en el microprograma. Esto puede
lograrse ampliando el conjunto de microinstrucciones a fin de
incluir algunas de ramificación condicional. Además
de la dirección de ramificación, estas
microinstrucciones pueden especificar cuál de las banderas
de instrucción, códigos de condición o tal
vez bits del registro de instrucción deben verificarse
como condición para que tenga lugar la
ramificación.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 18.: Organización
básica de una unidad de control
microprogramado
Ahora es posible implantar la instrucción de
Ramificación en Negativo por medio de un microprograma
como el que se muestra en la figura 19. Se considera que el
microprograma para esta instrucción empieza en la
localización 25. Por lo tanto, una microinstrucción
de Ramificación, al final de la parte de traída de
instrucción del microprograma, transfiere el control a la
localización 25. Debe observarse que la dirección
de ramificación de esta instrucción de
Ramificación es en realidad la salida del bloque de
"generación de dirección inicial". En la
localización 25, una microinstrucción de
ramificación condicional prueba el bit N de los
códigos de condición y provoca una
ramificación a Fin, si este bit es igual a 0.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 19.: Microprograma para la
instrucción Ramificar en Negativo
Para apoyar la ramificación de
microprogramas, la organización de la unidad de control
debe modificarse según se muestra en la figura
20.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Figura 20.: Organización de la
unidad de control para permitir ramificación condicional
en el programa
Los bits de la palabra de microinstrucción que
especifican las condiciones y dirección de
ramificación se alimentan al bloque "generador de
dirección inicial y ramificación". Este bloque
realiza la función de cargar una nueva dirección en
el PC cuando así se le indica, por medio de una
microinstrucción. Para habilitar el implante de una
ramificación condicional, las entradas a este bloque
consisten en banderas de condición y códigos, tanto
de condición, como del contenido del registro de
instrucción. Por lo tanto, el ~ PC siempre se incrementa
cada vez que se trae una nueva microinstrucción a partir
de la memoria de microprograma, excepto en las siguientes
situaciones:
- Cuando se encuentra una microinstrucción a
Fin, el UPC se carga con la dirección de la primera CW
del microprograma para el ciclo de traída de
instrucción (dirección = 0 en la figura
19). - Cuando se carga una nueva instrucción en el
IR, el PC se carga con la dirección inicial del
microprograma para esa instrucción. - Cuando se encuentra una microinstrucción de
Ramificación, y la condición de
ramificación se satisface, el PC se carga con
la dirección de ramificación.
Organizaciones semejantes a la de la figura 20 se han
implantado en muchas máquinas. Sin embargo, también
se han desarrollado algunos enfoques alternativos que se han
implantado en la práctica.
En conclusión, deben observarse algunos puntos
importantes en lo referente a las máquinas
microprogramadas, los cuales son:
- Los microprogamas definen el conjunto de
instrucciones de la computadora. Por lo tanto, es posible
modificar el conjunto de instrucciones con cambiar el contenido
de la memoria de microprograma. Esto ofrece considerable
flexibilidad tanto al diseñador como al usuario de la
computadora. - Ya que el contenido de la memoria de microprograma se
cambia con muy poca frecuencia, si es que se llega a hacer, por
lo general se llega a utilizar en una memoria de tipo
sólo de lectura
(ROM: Read Only Memory,). - La ejecución de cualquier instrucción
de máquina involucra varias traídas de la memoria
de microprograma. Por lo tanto, la velocidad de esta memoria
desempeña un papel importante para determinar la
velocidad general de la computadora.
Historia del Microprocesador
Han pasado más de 25 años desde que Intel
diseñara el primer microprocesador, siendo la
compañía pionera en el campo de la
fabricación de estos productos, y que actualmente cuenta
con más del 90 por ciento del mercado. Un
tiempo en el que todo ha cambiado enormemente, y en el que desde
aquel 4004 hasta el actual Pentium II hemos visto pasar varias
generaciones de máquinas que nos han entretenido y nos han
ayudado en el trabajo
diario.
Dicen que es natural en el ser humano querer mirar
constantemente hacia el futuro, buscando información de
hacia dónde vamos, en lugar de en dónde hemos
estado. Por ello, no podemos menos que asombrarnos de las
previsiones que los científicos barajan para dentro de
unos quince años. Según el Dr. Albert Yu,
vicepresidente de Intel y responsable del desarrollo de
los procesadores
desde el año 1984, para el año 2011 utilizaremos
procesadores cuyo reloj irá a una velocidad de 10 GHz
(10.000 MHz), contendrán mil millones de transistores y
será capaz de procesar cerca de 100 mil millones de
instrucciones por segundo. Un futuro prometedor, que
permitirá realizar tareas nunca antes pensadas.
INTEL
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Los inicios
Sin embargo, para que esto llegue, la historia de los procesadores
ha pasado por diferentes situaciones, siguiendo la lógica
evolución de este mundo. Desde aquel primer
procesador 4004
del año 1971 hasta el actual Pentium II del presente
año ha llovido mucho en el campo de los procesadores.
Tanto, que no estamos seguros si las cifras que se barajan en
Intel se pueden, incluso, quedar cortas. Aquel primer procesador
4004, presentado en el mercado el día 15 de noviembre de
1971, poseía unas características únicas
para su tiempo. Para empezar, la velocidad de reloj sobrepasaba
por poco los 100 KHz (sí, habéis leído bien,
kilohertzios), disponía de un ancho de bus de 4 bits y
podía manejar un máximo de 640 bytes de memoria.
Realmente una auténtica joya que para entonces
podía realizar gran cantidad de tareas, pero que por
desgracia no tiene punto de comparación con los actuales
micros. Entre sus aplicaciones, podemos destacar su presencia en
la calculadora Busicom, así como dotar de los primeros
tintes de inteligencia a
objetos inanimados.
Poco tiempo después, sin embargo, el 1 de abril
de 1972, Intel anunciaba una versión mejorada de su
procesador. Se trataba del 8008, que contaba como principal
novedad con un bus de 8 bits, y la memoria direccionable se
ampliaba a los 16 Kb. Además, llegaba a la cifra de los
3500 transistores, casi el doble que su predecesor, y se le puede
considerar como el antecedente del procesador que serviría
de corazón al
primer ordenador personal. Justo
dos años después, Intel anunciaba ese tan esperado
primer ordenador personal, de nombre Altair, cuyo nombre proviene
de un destino de la nave Enterprise en uno de los
capítulos de la popular serie de televisión
Star Trek la semana en la que se creó el ordenador. Este
ordenador tenía un coste de entorno a los 400
dólares de la época, y el procesador suponía
multiplicar por 10 el rendimiento del anterior, gracias a sus 2
MHz de velocidad (por primera vez se utiliza esta medida), con
una memoria de 64 Kb. En unos meses, logró vender decenas
de miles de unidades, en lo que suponía la
aparición del primer ordenador que la gente podía
comprar, y no ya simplemente utilizar.
La introducción de IBM
Sin embargo, como todos sabemos, el ordenador personal
no pasó a ser tal hasta la aparición de IBM, el
gigante azul, en el mercado. Algo que sucedió en dos
ocasiones en los meses de junio de 1978 y de 1979. Fechas en las
que respectivamente, hacían su aparición los
microprocesadores 8086 y 8088, que pasaron a formar el denominado
IBM PC, que vendió millones de unidades de ordenadores de
sobremesa a lo largo y ancho del mundo. El éxito
fue tal, que Intel fue nombrada por la revista
"Fortune" como uno de los mejores negocios de
los años setenta. De los dos procesadores, el más
potente era el 8086, con un bus de 16 bits (por fin), velocidades
de reloj de 5, 8 y 10 MHz, 29000 transistores usando la
tecnología de 3 micras y hasta un máximo de 1 Mega
de memoria direccionable. El rendimiento se había vuelto a
multiplicar por 10 con respecto a su antecesor, lo que
suponía un auténtico avance en lo que al mundo de
la informática se refiere. En cuanto al
procesador 8088, era exactamente igual a éste, salvo la
diferencia de que poseía un bus de 8 bits en lugar de uno
de 16, siendo más barato y obteniendo mejor respaldo en el
mercado.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
En el año 1982, concretamente el 1 de febrero,
Intel daba un nuevo vuelco a la industria con la aparición
de los primeros 80286. Como principal novedad, cabe destacar el
hecho de que por fin se podía utilizar la denominada
memoria
virtual, que en el caso del 286 podía llegar hasta 1
Giga. También hay que contar con el hecho de que el tiempo
pasado había permitido a los ingenieros de Intel
investigar más a fondo en este campo, movidos sin duda por
el gran éxito de ventas de los
anteriores micros. Ello se tradujo en un bus de 16 bits, 134000
transistores usando una tecnología de 1.5 micras, un
máximo de memoria direccionable de 16 Megas y unas
velocidades de reloj de 8, 10 y 12 MHz. En términos de
rendimiento, podíamos decir que se había
multiplicado entre tres y seis veces la capacidad del 8086, y
suponía el primer ordenador que no fabricaba IBM en
exclusiva, sino que otras muchas compañías,
alentadas por los éxitos del pasado, se decidieron a crear
sus propias máquinas. Como dato curioso, baste mencionar
el hecho de que en torno a los seis
años que se le concede de vida útil, hay una
estimación que apunta a que se colocaron en torno a los 15
millones de ordenadores en todo el mundo.
Microsoft también juega
El año de 1985 es clave en la historia de los
procesadores. El 17 de octubre Intel anunciaba la
aparición del procesador 80386DX, el primero en poseer una
arquitectura de 32 bits, lo que suponía una velocidad a la
hora de procesar las instrucciones realmente importante con
respecto a su antecesor. Dicho procesador contenía en su
interior en torno a los 275000 transistores, más de 100
veces los que tenía el primer 4004 después de tan
sólo 14 años. El reloj llegaba ya hasta un
máximo de 33 MHz, y era capaz de direccionar 4 Gigas de
memoria, tamaño que todavía no se ha superado por
otro procesador de Intel dedicado al mercado doméstico. En
1988, Intel desarrollaba un poco tarde un sistema sencillo de
actualizar los antiguos 286 gracias a la aparición del
80386SX, que sacrificaba el bus de datos para dejarlo en uno de
16 bits, pero a menor coste. Estos procesadores irrumpieron con
la explosión del entorno gráfico Windows,
desarrollado por Microsoft unos
años antes, pero que no había tenido la suficiente
aceptación por parte de los usuarios. También
había habido algunos entornos que no habían
funcionado mal del todo, como por ejemplo el Gem 3, pero no es
hasta este momento cuando este tipo de entornos de trabajo se
popularizan, facilitando la tarea de enfrentarse a un ordenador,
que por aquel entonces sólo conocíamos unos pocos.
Windows vino a ser un soplo de aire fresco para la industria,
pues permitió que personas de cualquier condición
pudiera manejar un ordenador con unos requerimientos
mínimos de informática.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Y si esto parecía la revolución, no tuvimos que esperar mucho
para que el 10 de abril de 1989 apareciera el Intel 80486DX, de
nuevo con tecnología de 32 bits y como novedades
principales, la incorporación del caché de nivel 1
(L1) en el propio chip, lo que aceleraba enormemente la
transferencia de datos de este caché al procesador,
así como la aparición del co-procesador
matemático, también integrado en el procesador,
dejando por tanto de ser una opción como lo era en los
anteriores 80386. Dos cambios que unido al hecho de que por
primera vez se sobrepasaban el millón de transistores
usando la tecnología de una micra (aunque en la
versión de este procesador que iba a 50 MHz se usó
ya la tecnología .8 micras), hacía posible la
aparición de programas de calidad
sorprendente, entre los que los juegos ocupan
un lugar destacado. Se había pasado de unos ordenadores en
los que prácticamente cualquier tarea compleja
requería del intérprete de comandos de
MS-DOS para
poder ser
realizada, a otros en los que con mover el cursor y pinchar en la
opción deseada simplificaba en buena medida las tareas
más comunes. Por su parte, Intel volvió a realizar,
por última vez hasta el momento, una versión de
este procesador dos años después. Se trataba del
80486SX, idéntico a su hermano mayor salvo que no
disponía del famoso co-procesador matemático
incorporado, lo que suponía una reducción del coste
para aquellas personas que desearan introducirse en el segmento
sin necesidad de pagar una suma elevada.
Llega el Pentium
Sin embargo, Intel no se quedó contemplando la
gran obra que había creado, y rápidamente
anunció que en breve estaría en la calle una nueva
gama de procesadores que multiplicaría de forma general
por cinco los rendimientos medios de los 80486. Se trataba de los
Pentium, conocidos por P5 en el mundillo de la informática
mientras se estaban desarrollando, y de los que la prensa de medio
mundo auguraba un gran futuro, tal y como así ha sido.
Estos procesadores pasarán a la historia por ser los
primeros a los que Intel no los bautizó con un
número, y sí con una palabra. Esto era debido a que
otras compañías dedicadas a la producción de
procesadores estaban utilizando los mismos nombres puesto que no
se podía registrar una cadena de ellos como marca, y por lo
tanto, eran de dominio
público. De modo que a Intel no le quedó más
remedio que ponerle una palabra a su familia de
procesadores, que además, con el paso del tiempo, se
popularizó en los Estados Unidos de
tal forma, que era identificada con velocidad y potencia en
numerosos cómics y programas de televisión. Estos procesadores que
partían de una velocidad inicial de 60 MHz, han llegado
hasta los 200 MHz, algo que nadie había sido capaz de
augurar unos años antes.
Para ver el
gráfico seleccione la opción "Descargar" del
menú superior
Con una arquitectura real de 32 bits, se usaba de nuevo
la tecnología de .8 micras, con lo que se lograba realizar
más unidades en menos espacio (ver recuadro explicativo).
Los resultados no se hicieron esperar, y las
compañías empezaron aunque de forma tímida a
lanzar programas y juegos exclusivamente para el Pentium, hasta
el punto que en este momento quien no posea un procesador de este
tipo, está seriamente atrasado y no puede trabajar con
garantías con los programas que actualmente hay en el
mercado. Algo que ha venido a demostrar la aparición del
nuevo sistema operativo
de Microsoft Windows 95, que aunque funciona en equipos dotados
de un procesador 486, lo hace sin sacar el máximo partido
de sus funciones.
Pentium Pro y Pentium II
La aparición, el 27 de marzo de 1995, del
procesador Pentium Pro supuso para los servidores de
red y las
estaciones de trabajo un aire nuevo, tal y como ocurriera con el
Pentium en el ámbito doméstico. La potencia de este
nuevo procesador no tenía comparación hasta
entonces, gracias a la arquitectura de 64 bits y el empleo de una
tecnología revolucionaria como es la de .32 micras, lo que
permitía la inclusión de cinco millones y medio de
transistores en su interior. El procesador contaba con un segundo
chip en el mismo encapsulado, que se encargaba de mejorar la
velocidad de la memoria caché, lo que resultaba en un
incremento del rendimiento sustancioso. Las frecuencias de reloj
se mantenían como límite por arriba en 200 MHz,
partiendo de un mínimo de 150 MHz.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Un procesador que en principio no tiene muchos visos de
saltar al mercado doméstico, puesto que los procesadores
Pentium MMX parecen cubrir de momento todas las necesidades en
este campo. No podemos asegurar que en un futuro cercano esto no
acabe ocurriendo, pues en el mundo de la informática han
sucedido las cosas más extrañas, y nunca se sabe
por dónde puede tirar un mercado en constante
evolución.
Una evolución que demostró Intel hace muy
poco con un nuevo procesador, denominado Pentium II, que viene a
ser simplemente un nuevo ingenio que suma las tecnologías
del Pentium Pro con el MMX. Como resultado, el Pentium II es el
procesador más rápido de cuantos ha comercializado
Intel. Por el momento únicamente se dispone de las
versiones a 233 y 266 MHz, pero después de este verano
podremos disfrutar de la versión de 300 MHz, que
supondrá un nuevo récord de velocidad de reloj. El
Pentium II, cuyas características fueron tratadas con
detalle en el artículo de portada del pasado mes de la
revista, es hoy (por poco tiempo) el extremo de la cadena
evolutiva de Intel.
El futuro de los
microprocesadores
La evolución que están sufriendo los
procesadores es algo que no parece escapar a la atención de millones de personas, cuyo
trabajo depende de hasta dónde sean capaces de llegar los
ingenieros de Intel a la hora de desarrollar nuevos chips. El
último paso conocido ha sido la implementación de
la nueva arquitectura de 0.25 micras, que viene a sustituir de
forma rotunda la empleada hasta el momento, de 0.35 micras en los
últimos modelos de
procesador. Esto va a significar varias cosas en un futuro no muy
lejano. Para empezar, la velocidad se incrementará una
media del 33 por ciento con respecto a la generación de
anterior. Es decir, el mismo procesador usando esta nueva
tecnología puede ir un 33 por ciento más
rápido que el anterior. Para que os podáis hacer
una idea del tamaño de esta tecnología, deciros que
el valor de 0.25 micras es unas 400 veces más
pequeño que un pelo de cualquier persona. Y este
tamaño es el que tienen los transistores que componen el
procesador. El transistor, como muchos sabréis, permite el
paso de la corriente eléctrica, de modo que en
función de en qué transistores haya corriente, el
ordenador realiza las cosas (esto es una simplificación de
la realidad, pero se ajusta a ella más o menos). Dicha
corriente eléctrica circula entre dos puntos, de modo que
cuanto menor sea esta distancia, más cantidad de veces
podrá pasar pues el tiempo de paso es menor. Aunque
estamos hablando de millonésimas de segundo, tened en
cuenta que un procesador está trabajando continuamente, de
modo que ese tiempo que parece insignificante cuando es sumado a
lo largo de las miles de millones de instrucciones que realizar,
nos puede dar una cantidad de tiempo bastante importante. De modo
que la tecnología que se utilice puede dar resultados
totalmente distintos incluso utilizando el mismo
procesador.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Por el momento, en un futuro cercano además de
contar con la arquitectura de 0.25 micras, podremos disfrutar de
duna de 0.07 para el año 2011, lo que supondrá la
introducción en el procesador de mil millones de
transistores y alcanzando una velocidad de reloj cercana a los
10000 MHz, es decir, 10 GHz.
La tecnología MMX
Aunque no podamos considerar la tecnología MMX
como un procesador en sí mismo, sería injusto no
hablar de ella en un informe como éste. Es uno de los
mayores pasos que ha dado Intel en la presente década, y
según ellos mismos, todos los procesadores que fabriquen a
partir de mediados del próximo año llevarán
incorporada esta arquitectura. Para su desarrollo se analizaron
un amplio rango de programas para determinar el funcionamiento de
diferentes tareas: algoritmos de
descompresión de vídeo, audio o gráficos, formas de reconocimiento del
habla o proceso de imágenes,
etc. El análisis dio como resultado que numerosos
algoritmos usaban ciclos repetitivos que ocupaban menos del 10%
del código del programa, pero que en la práctica
suponían el 90% del tiempo de ejecución. De modo
que nació la tecnología MMX, compuesta por 57
instrucciones y 4 tipos de datos
nuevos, que se encargan de realizar esos trabajos cíclicos
consumiendo mucho menos tiempo de ejecución. Antes, para
manipular 8 bytes de datos gráficos requería 8
repeticiones de la misma instrucción; ahora, con la nueva
tecnología, se puede utilizar una única
instrucción aplicada a los 8 bytes simultáneamente,
obteniendo de este modo un incremento del rendimiento de
8x.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Desde la aparición del 8088 hace los principios de
funcionamiento de los micros no se han modificado mucho, a pesar
de que ahora se ha llegado a la quinta generación de estos
chips y se ha profundizado en todo lo referente a las prestaciones,
en tema en los que hace diez años uno ni tan sólo
se atrevía a soñar. De todas maneras estas
modificaciones se refieren especialmente a la velocidad de
trabajo del procesador con el cual se maneja el DOS, no al
concepto básico, por lo menos en lo referente al modo
real.
Echemos de todas formas, en primer lugar, un vistazo a
la historia del desarrollo de los procesadores Intel.
La tarea del procesador es la de tratar las series de
órdenes en lenguaje
máquina, pues el lenguaje
máquina es el único que entiende el procesador. Las
instrucciones en el lenguaje máquina no son exactamente
iguales para todos los ordenadores, sino que solo son validas
para el tipo de microprocesador en cuestión. Los
diferentes miembros de la familia
80xxx trabajan sin embargo con el mismo lenguaje máquina,
lo que permite que estos sean compatibles entre ellos.
El primer representante de esta familia, el 8086, se
desarrollo ya en el año 1978. Sus sucesores fueron
modificados de muchas maneras, y en parte fueron modificados de
forma radical, pero sin perder la compatibilidad con los
anteriores. En el caso del 8088 esto significó un paso
hacia atrás, ya que si bien el 8088 disponía del
mismo grupo de instrucciones y la misma estructura interna que el
8086, se comunicaba con la memoria mediante un bus de datos de 8
bits, en lugar de 16 bits.
El resto de miembros de esta familia, son desarrollos
posteriores del 8086. De manera que por ejemplo el 80186 dispone
de nuevas funciones adicionales, mientras que al 80286 se le
crearon mas registros en comparación al 8086, así
como también se le amplió el área de
direcciones. La novedad mas decisiva del 80286 respecto a sus
predecesores la representa el modo protegido, que sin embargo no
puede utilizarse con el DOS.
Al 80286 le siguió el 80386, que marcó un
notable salto en la capacidad de rendimiento. Continuó
desarrollando el modo protegido y fue el primero de disponer de
un procesador Intel de registros de 32 bits, que sin embargo no
pudo utilizarse correctamente en la programación del DOS. Este procesador
existe también en una versión SX y DX, que se
diferencian únicamente en la frecuencia y en el
tamaño del bus de dato; el SX trabaja con un bus de datos
de 16 bits, mientras que el DX puede transmitir de una sola vez
una palabra de 32 bits mediante su bus.
El micro que sigue al 80386, también llamado
"i486" es el 80486. Este se distingue especialmente del 80386 por
la integración del coprocesador
numérico 80387, por la preparación de un
código-caché y el tratamiento más
rápido de muchas instrucciones en lenguaje máquina,
siendo también compatible con el 8086.
El hito técnico actual lo marca el procesador
Pentium que ha mejorado la velocidad de proceso interna en
relación con el 486. En determinadas situaciones el
procesador esta en situación de procesar dos ordenes
consecutivas al mismo tiempo, siempre y cuando la segunda no
dependa del resultado de la primera.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
También la denominación en nueva en el
Pentium puesto que se esperaba que tras el 80486 el sucesor se
denominaría 80586. Intel sin embargo rompió con la
tradición puesto que nombres como 8088 o 80486
no
pueden ser patentados. Esto lo aprovecharon durante
largo tiempo otros fabricantes de estos componentes para
distribuir procesadores compatibles con Intel, con otros nombres
parecidos.
En el centro de todos los procesadores se encuentran sus
registros, "variables de hardware", en los cuales pueden cargarse
datos de la memoria, tratarlos allí con l a ayuda de las
instrucciones del lenguaje máquina y finalmente volverlos
a escribir en la memoria. Esto es mucho más rápido
que la manipulación de información dentro de la
memoria, ya que los registros se evacuan directamente en el
procesador y por lo tanto no es necesario acceder al bus para
poner su contenido a disposición de las instrucciones en
lenguaje máquina. Por esta razón los registros del
procesador juegan un papel muy importante para la
programación del sistema, ya que es mediante estos
registros que se desarrollan el flujo de información entre
un programa y las funciones del DOS y BIOS que este
llama.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
Todos los registros tienen un tamaño de 16 bits
(2 bytes). Así pueden registrar un valor entre 0 y 65535
(111111111111111b, o FFFFh).
El Procesador 386
El microprocesador 386 (también conocido como 386
DX) supone un paso muy importante frente al 286. Hasta entonces,
tanto los micros 8088 y 8086 como el 286 eran microprocesadores
de 16 bits; trabajaban con 16 bits a la vez en cada ciclo de
reloj. Por el contrario, el 386 es un microprocesador de 32 bits,
que procesa 32 bits simultáneamente en cada ciclo de
reloj. Los ordenadores 386 tienen una velocidad desde 16 a 50
Mhz.
El bus de direcciones del 386 tiene 32 bits. Con 32 bits
se pueden redireccionar 232 celdas de memoria lo que
equivale a 4096 MB. También en este caso los primeros 1024
k se reparten como los micros 80886 y 286: 640k de memoria
convencional y los 364k restantes de memoria superior.
El microprocesador 80386 esta diseñado para
soportar aquellos sistemas operativos optimizados para
multitarea. El micro 80386 es capaz de direccionar hasta 4
gigabytes de memoria física y 64
tetrabytes de memoria virtual. La gestión
de memoria integrada y arquitectura de protección incluye
registros de traducción de direcciones y mecanismo de
protección para soportar sistemas
operativos y hardware avanzado de multitarea.
El transvase entre instrucciones – pipelining -, una
elevada anchura del bus y una traducción de direcciones en
la pastilla acortan significativamente el tiempo medio de
ejecución de la instrucción, manteniendo un alto
rendimiento del sistema. Estas características de
diseño de arquitectura habilitan al 80386 a ejecutar
instrucciones a una frecuencia de 3 a 4 millones por
segundo.
Características adicionales se incluyen autotest,
acceso directo a la memoria interna (cache) donde se realiza la
traducción de página y cuatro nuevos registros de
"Breakpoint". El 80386 tiene el código objeto compatible
con el 8086, 8088 y 80286.
El procesador 386SX
Los microprocesadores 386SX aparecieron después
que el 386 como una solución intermedia en precio y
prestaciones entre el 286 y el 386. Los micros 386 puros (386DX)
necesitan a su alrededor una circuiteria de 32 bits, mientras que
los SX necesitan una circuiteria de 16 bits, mucho mas barata. De
esta forma, los fabricantes podían utilizar todos los
componentes y la circuitería de 16 bits que usaban para un
286, pero ahora incorporando un microprocesador de 32
bits.
La diferencia entre un ordenador 386DX y un ordenador
386SX se percibe en la velocidad del ordenador, pero desde el
punto de vista de las aplicaciones que se pueden ejecutar, es
totalmente, indiferente tener un microprocesador 386DX que un
386SX.
El procesador 386SL
El microprocesador 386SL es equivalente al 386SX con la
particularidad de estar diseñado especialmente para los
ordenadores portátiles, cuidando sus especiales
necesidades de baja potencia y consumo. El
386SL posee un modo sleep que utiliza menso energía
durante su funcionamiento. Además, existen nuevos recursos para
poder minimizar el funcionamiento del ordenador (el consumo de
energía) cuando no se utiliza. El resultado es que la
batería puede doblar su tiempo en un portátil con
386SL frente a un 386SX. Los microprocesadores 386SL sólo
se utilizan en portátiles y notebooks y, hoy en
día, son los únicos microprocesadores 386 en los
que continúa desarrollando y trabajando.
Tipos de datos
La pastilla microprocesadora 80386 soporta varios tipos
de datos además de los soportados por sus predecesores
(80×86). Soporta enteros con signo y sin signo de 32 bits y
campos de bits de 1 a 32 bits de
longitud. También soporta los tipos de punteros
estándares, así como un puntero de desplazamiento
de 32 bits y un puntero completo de 48 bits.
Otros registros de 32 bits (ESI, EDI, EBP, ESP) no
se pueden dividir en registros de 16 bits. Por otra parte, el
puntero de instrucciones EIP, también es un registro de 32
bits, cuyo contenido se modifica dependiendo de los cambios que
experimente el flujo del programa que el procesador ejecute. Por
lo tanto, EIP se modifica implícitamente mediante
instrucciones en código máquina.
La pastilla microprocesadora 80386 proporciona al
programador 32 registros. Estos 32 registros pueden ser divididos
en siete categorías principales.
– Registros de propósito general
– Registros de segmentos
– Puntero de instrucción y
señalizaciones
– Registros de control
– Registros de direcciones del sistema
– Registros de test.
Estos registros son un superconjunto de los registros
del 8086 y el 80286; además, todos los registros de 16
bits del 8086 y el 80286 están contenidos en el
microprocesador 80386 de 32 bits.
REGISTROS DE PROPOSITO GENERAL
Los ocho registros de propósito general se
utilizan de forma análoga a los ocho registros de
propósito general asociados al 80286, excepto que los
registros tienen ahora 32 bits. Estos registros son capaces de
soportar operandos de datos de 1, 8, 16 y 32 bits y campos de
bits de 1 a 32 bits. Los ocho registros son el EAX (acumulador),
EBX (base), ECX (contador), EDX (datos), ESP (puntero de pila),
EBP (puntero base), ESI (índice fuente) y EDI
(índice destino).
Para acceder a los 32 bits de un registro, todas las
referencias del registro deben comenzar "E". Cada uno de los ocho
registros de propósito general puede ser descompuesto en
sus equivalentes de 16 bits del 8086/80286 referenciando los
registros sin usar el prefijo "E".
REGISTOS DE SEGMENTOS
El microprocesador 80386 contiene seis registros
segmento de 16 bits. Los seis registros segmento mantiene
los valores
del selector en las posiciones de memoria actualmente
direccionables. En modo de dirección real, un segmento
puede variar desde 1 byte hasta un tamaño de segmento
máximo de 64 bytes, o 216. El direccionamiento
en modo protegido habilita rangos de segmento desde 1 byte hasta
un máximo de 4 gigabytes, o 232
bytes.
Para ver el gráfico seleccione la
opción "Descargar" del menú superior
COPROCESADOR MATEMÁTICO
OVERDRIVE
PROCESADOR Pentium
Pentium IV
AMD
Historia de AMD
K5:
IDT
WINCHIP C6
WINCHIP C6+
WINCHIP 2- 3D
IBM:
Noticias: El nuevo AMD es un triunfador
(1) Para ver
el texto completo seleccione la opción "Descargar" del
menú superior
Maria
Esther