Bloques
que componen el 80486
Este microprocesador es básicamente
un 80386 con el agregado de una unidad de punto flotante compatible
con el 80387 y un caché de memoria de 8 KBytes. Por lo tanto
los bloques que componen el 80486 son los siguientes:
1. Unidad de ejecución:
Incluye los registros de uso general de 32 bits, la unidad
lógico-matemática y un barrel shifter de 64 bits. La unidad
de ejecución está mejorada con lo que se necesita un sólo
ciclo de reloj para las instrucciones más frecuentes.
2. Unidad de segmentación: Incluye los registros
de segmento, los cachés de información de descriptores
y la lógica de protección. No tiene diferencias con respecto
al 80386.
3. Unidad de paginación: Es la encargada de
traducir las direcciones lineales (generadas por la unidad anterior)
en direcciones físicas. Incluye el buffer de conversión
por búsqueda (TLB). Los últimos modelos (DX4, algunos
DX2) soportan páginas de 4MB aparte de las de 4KB del 80386.
4. Unidad de caché: La evolución de las
memorias hizo que el tiempo de acceso de las mismas decrecieran lentamente,
mientras que la velocidad de los microprocesadores aumentaba exponencialmente.
Por lo tanto, el acceso a memoria representaba el cuello de botella.
La idea del caché es tener una memoria relativamente pequeña
con la velocidad del microprocesador. La mayoría del código
que se ejecuta lo hace dentro de ciclos, con lo que, si se tiene el
ciclo completo
dentro del caché, no sería necesario acceder a la memoria
externa. Con los datos pasa algo similar: también ocurre un efecto
de localidad. El caché se carga rápidamente mediante un
proceso conocido como "ráfaga", con el que se pueden
transferir cuatro bytes por ciclo de reloj. Más abajo se da información
más detallada de esta unidad.
5. Interfaz con el
bus: Incluye los manejadores del bus de direcciones (con salidas
de A31-A2 y BE0# a BE3# (mediante esto último cada byte del bus
de datos se habilita por separado)), bus de datos de 32 bits y bus de
control.
6. Unidad de instrucciones: Incluye la unidad de prebúsqueda
que le pide los bytes de instrucciones al caché (ambos se comunican
mediante un bus interno de 128 bits), una cola de instrucciones de 32
bytes, la unidad de decodificación, la unidad de control, y la
ROM de control (que indica lo que deben hacer las instrucciones).
7. Unidad de punto flotante: Incluye ocho registros
de punto flotante de 80 bits y la lógica necesaria para realizar
operaciones básicas, raíz cuadrada y trascendentes de
punto flotante. Es tres o cuatro veces más rápido que
un 386DX y 387DX a la misma frecuencia de reloj. Esta unidad no está
incluida en el modelo 486SX.
Unidad
de caché
Estos procesadores tienen
un caché interno que almacena 8KB de instrucciones y datos excepto
el DX4 y el Write-back enhanced DX4 que tienen 16KB de caché
interno. El caché aumenta el rendimiento del sistema ya que las
lecturas se realizan más rápido desde el caché
que desde la memoria externa. Esto también reduce el uso del
bus externo por parte del procesador. Éste es un caché
de primer nivel (también llamado L1).
El procesador 80486 puede usar un caché de segundo nivel (también
llamado L2) fuera del chip para aumentar aún más el rendimiento
general del sistema.
Si bien la operación de estos cachés internos y externos
son transparentes a la ejecución de los programas, el conocimiento
de su funcionamiento puede servir para optimizar el software.
El caché está disponible en todos los modos de funcionamiento
del procesador: modo real, modo protegido y modo de manejo del sistema.
Funcionamiento
El caché es una memoria
especial, llamada memoria asociativa. Dicha memoria tiene, asociado
a cada unidad de memoria, un tag, que almacena la dirección de
memoria que contiene los datos que están en la unidad de memoria.
Cuando se desea leer una posición de memoria mediante esta memoria
asociativa, se
comparan todos los tags con esta dirección. Si algún tag
tiene esta dirección, se dice que hubo un acierto (cache hit
en inglés) con lo que se puede leer la información asociada
a ese tag. En caso contrario hay un fallo (cache miss en inglés),
con lo que hay que perder un ciclo de bus para leer el dato que está
en memoria externa.
En el caso del 80486, cada unidad de memoria son 16 bytes. Esta cantidad
es una línea del caché. Las líneas pueden ser válidas
(cuando contienen datos de la memoria principal) o inválidas
(en este caso la línea no contiene información útil).
Como el caché se llena por líneas completas (comenzando
por direcciones múltiplos de 16), hay que tratar de no leer posiciones
aleatorias de la memoria, ya que en este
caso, si se leen bytes en posiciones alejadas unas de otras, el procesador
usará cuatro ciclos de bus para leer 16 bytes (para llenar una
línea) por cada byte que deseamos leer. Esto no es problema para
el código o la pila (stack) ya que éstos se acceden generalmente
de manera secuencial.
Hay dos clases de cachés: write-through y write-back (retroescritura)(implementado
solamente en los modelos write-back enhanced DX2 y write-back enhanced
DX4). La diferencia entre las dos radica en el momento de escritura.
Las primeras siempre escriben en la memoria principal, mientras que
las otras sólo escriben cuando se llena el caché y hay
que desocupar una línea. Esto último aumenta el rendimiento
del
sistema.
Hay dos nuevos bits del registro de control CR0 que controlan el funcionamiento
del caché: CD (Cache Disable, bit 30) y NW (Not write-through,
bit 29). Cuando CD = 1, el 80486 no leerá memoria externa si
hay una copia en el caché, si NW = 1, el 80486 no escribirá
en la memoria externa si hay datos en el caché (sólo se
escribirá en el caché). La operatoria normal (caché
habilitado) es CD = NW = 0. Nótese que si
CD = NW = 1 se puede utilizar el caché como una RAM rápida
(no hay ciclos externos de bus ni para lectura ni para escritura si
hay acierto en el caché). Para deshabilitar completamente el
caché deberá poner CD = NW = 1 y luego ejecutar una de
las instrucciones para vaciar el caché.
Existen dos instrucciones
para vaciar el caché: INVD y WBINVD.
Versiones
del 80486
80486 DX: En
abril de 1989 la compañía Intel presentó su nuevo
microprocesador: el
80486 DX, con
1.200.000 transistores a bordo, el doble de la velocidad del 80386 y
100% de compatibilidad con los microprocesadores anteriores. El consumo
máximo del 486DX de 50 MHz es de 5 watt.
80486 SX:
En abril de 1991 introdujo el 80486 SX, un producto de menor costo que
el anterior sin el coprocesador matemático que posee el 80486
DX (bajando la cantidad de transistores a 1.185.000).
80486 DX2:
En marzo de 1992 apareció el 80486 DX2, que posee un duplicador
de frecuencia interno, con lo que las distintas funciones en el interior
del chip se ejecutan al doble de velocidad, manteniendo constante el
tiempo de acceso a memoria. Esto permite casi duplicar el rendimiento
del microprocesador, ya que la mayoría de las instrucciones que
deben acceder a memoria en realidad acceden al caché interno
de 8 KBytes del chip.
80486 SL:
En el mismo año apareció el 80486 SL con características
especiales de ahorro de energía.
80486 DX4:
Siguiendo con la filosofía del DX2, en 1994 apareció el
80486 DX4, que triplica la frecuencia de reloj y aumenta el tamaño
del caché interno a 16 KBytes.
El chip se empaqueta en el formato PGA (Pin
Grid Array) de 168 pines en todas las versiones. En el
caso del SX, también existe el formato PQFP
(Plastic Quad Flat Pack) de 196 pines.
Las frecuencias más
utilizadas en estos microprocesadores son: SX: 25 y 33 MHz, DX: 33 y
50 MHz, DX2: 25/50 MHz y 33/66 MHz y DX4: 25/75 y 33/100 MHz. En los
dos últimos modelos, la primera cifra indica la frecuencia del
bus externo y la segunda la del bus interno. Para tener una idea de
la velocidad, el 80486
DX2 de 66 MHz ejecuta 54 millones de instrucciones por segundo.
|