Familia 8086

Anuncio
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
Sistema basados en 8086
Vamos a estudiar un sistema computador basado en el 8086 de Intel.
Se trata de una serie de procesadores que van desde 8088 hasta los Pentium actuales, que respetan una
serie de características que permiten que cualquier software desarrollado para uno de ellos siga siendo
funcional en las generaciones siguientes. A esto es a lo que se le llama compatibilidad.
Gracias a la compatibilidad podemos seguir desarrollando programas para el 8086 con la plena certeza de
que funcionarán en cualquier máquina que disponga de un procesador de Intel de la familia 8086.
Para proporcionar compatibilidad no solo se desea que el código se ejecute bien dentro del procesador.
También se espera que la relación del procesador con el entorno también se respete en cierta medida.
De ahí que el conjunto de controladores que presentamos, que de hecho son obsoletos, mantienen la
misma funcionalidad que podemos encontrar hoy en computadores basados en Pentium.
PROCESADORES
8086
CPU de 16 bits
8087
NDP Numeric Data Processor
8089
IOP Procesador de entradas/salidas
CONTROLADORES DE BUS
8288
Controlador de Bus
8282
Latch de direcciones octal
8286
Transceptor de datos octal
CONTROLADORES DE SISTEMA
8259
Controlador programable de interrupciones
8237
Controlador programable de DMA
CONTROLADORES DE PERIFÉRICOS
8251
Controlador programable de Interfaz serie
8255
Controlador programable de Interfaz paralelo
8275
Controlador programable de C.R.T.
8272
Controlador programable de discos flexibles
8086 5MHz..10MHz
-Registros de datos de 16 bits
-Bus de datos de 16 bits
(Distribuido en Byte par y Byte impar, según la dirección de acceso. Todo acceso a byte sobre una dirección par interactúa sobre el
Byte par y lo correspondiente para los accesos a direcciones impares. Los accesos a palabras en dirección par interactúan con
ambos. Los accesos a palabra con dirección impar implican dos accesos reales)
-Bus de direcciones de 10 bits
(Está multiplexado con el bus de datos + cuatro líneas de dirección separadas. Se distingue entre espacio de direcciones de memoria
y espacio de direcciones de entrada salida)
-Esquema de direccionamiento segmentado. Segmento+Desplazamiento
(El segmento es una sección de memoria de 65536 bytes que comienza en la localización especificada por el registro de segmento
correspondiente. El usuario puede manejar 4 registros de segmento: CS,DS,ES,SS)
1
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
80186 (10MHz..12MHz)
Incluye funciones extra en el chip, que en los sistemas 8086 eran realizadas por controladores separados.
-
Generador de señal de reloj
2 canales de DMA (con bus de direcciones de 20 bits)
3 contadores programables de 16 bits
Controlador de interrupciones (hasta 128 externas)
Generador programable de estados de espera
Unidad programable de decodificación de direcciones (para activar el chip select)
16 nuevas instrucciones
2
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
80286 100.000 transistores (6MHz..12MHz)
-
Separación física del bus de datos y el bus de direcciones (este de 24 líneas y aquel de 16)
Reducción del ciclo de bus a 2 periodos de reloj
Introducción de lógica de manejo de memoria virtual
- Modo Real (el modo compatible 8086) El bus de direcciones se limita a 20 líneas (las
otras 4 permanecen a cero -salvo en el momento de arranque que están a 1 durante la
ejecución de la primera instrucción)
- Modo Protegido ( uso completo de las 24 líneas del bus de direcciones, gestión de
protección de memoria)
(El procesador arranca en modo real y es conmutable a modo protegido, pero luego es
necesario resetearlo para volver al modo real)
Uso del bit A20 de direcciones.
Cuando el registro de segmento tiene un valor máximo y al sumársele el desplazamiento se
genera un acarreo, la dirección resultante tiene el bit 20 a 1. En el procesador 8086, puesto
que no existe el bit 20 en el bus de direcciones la dirección resultante sería en realidad el
módulo 220 de la dirección correcta. Pero a partir de el 80286 ya existe la línea física A20.
Por medio de una lógica controlada por el programador (A20 gate) estos pueden decidir si
en el modo real se va a permitir la activación de ese bit o no (única y exclusivamente el
A20). Esto proporciona, en el caso de que se opte por permitir la activación de este bit en el
modo real, un conjunto extra de direcciones accesibles (100000h-10FFEFh).
3
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
80386
(16MHz..33MHz)
-
Bus de datos de 32 bits
Tamaño de palabra (registros) de 32 bits
Bus de direcciones de 32 bits
Segmentación y paginado virtual
Nuevo modo de direccionamiento (indice escalado)
Nuevas instrucciones (sobre todo de manejo de bits)
Permite la conmutación entre el modo real y el modo protegido en caliente
Introduce el modo virtual (el modo real en una partición de 1M de memoria)
Modo Real.
Es el modo 8086 con registros de 32 bits. No obstante los registros son multicara:
EAX (registro de 32 bits)
AX (registro de 16 bits)
AH, AL (registros de 8 bits)
Admite nuevos modos de dirección en los que cualquier registro de 32 bits puede ser utilizado
como registro base o registro índice.
Introduce un nuevo modo de direccionamiento que es el índice escalado:
Es posible multiplicar un registro por un escalar en la especificación de una dirección imaginar
las dos instrucciones siguientes en un bucle:
MOV AX, [EBX*2]
INC EBX
Modo protegido.
Lo único que distingue al modo real del modo protegido es el direccionamiento a memoria que
tiene en cuenta la segmentación y el paginado. En el 80286 la memoria virtual se basa
únicamente en la segmentación. El esquema de paginado es una incorporación opcional
(activable o desactivable) del 80386.
La diferencia entre segmentación y paginado es que los segmentos son secciones de memoria de
longitud variable, mientras que las páginas tienen tamaño fijo.
Las direcciones se siguen especificando con dos figuras, el segmento y el offset. El segmento
sigue especificándose con 16 bits mientras que el offset utiliza 32. El offset es lo que se
denomina la 'dirección efectiva'.
El registro de segmento es un índice para localizar en una tabla el 'descriptor de segmento'. Este
descriptor contiene la dirección base de memoria del segmento (32 bits) , su tamaño (32 bits -16
en 80286) e información sobre derechos de acceso:
(entre otros)
G: (0) el límite viene especificado en bytes, (1) el límite viene especificado en páginas de 4K
A: (1) que el la información ha sido accedida (0) que la información o ha sido accedida
R/W: permite la protección de lectura/escritura de la información contenida
E: (1) se trata de código (0) se trata de datos
DPL: descriptor de niveles de privilegio (00) máximo privilegio, (11) mínimo privilegio
P: bit de presencia en memoria física.
La dirección base del segmento concatenada con la dirección efectiva forma la dirección de
memoria (virtual).
La tabla de descriptores de segmento reside en memoria. Para no tener que acceder a memoria
cada vez que se desea calcular una dirección, asociado al registro de segmento existe una sección
escondida que alberga el descriptor del segmento activo en cada momento.
Las tablas de descriptores son construidas por el sistema operativo. Las direcciones de estas
tablas están localizadas en los registros de tabla de
4
SEGMENTO(16..0)
Buses y Periféricos. 99/00
0FFSET(31..0)
Familia x86. EvoluciónFamilia 8086
Tabla de segmentos
Descriptor
dirección de segmento
+
offset
dirección virtual? (efectiva?)
DIR
TABL
OFFSET
CR3
pagina
offset
descriptores y existen tres de estos registros: LRDT (local), GRDT (global), IRDT
(interrupciones). Dentro del propio registro de segmento se encuentra codificado (TI; bit 2) a qué
tabla de descriptores se accederá para obtener el descriptor de segmento
Paginado
Si se activa el paginado, la dirección obtenida a partir del la dirección base del segmento y el
desplazamiento es aún una dirección de memoria virtual. El esquema de paginado se encarga de
traducir ésta a una dirección de memoria física.
La dirección virtual compone de tres secciones: directorio, tabla y offset. Los 10 bits que forman
la sección directorio constituyen un índice a un Directorio de páginas (cuya dirección en
memoria está contenida en un registro, C3). Cada una de las entradas de este directorio es un
Descriptor de tabla de páginas, que apunta a dicha tabla, la cual contiene las direcciones físicas
de un conjunto de páginas. La sección tabla (10 bits) de la dirección virtual nos permite
seleccionar una de estas páginas y comprobar si está activa y con residencia en la memoria, en
cuyo defecto ha de realizarse un proceso de sustitución. Activa la página, el descriptor de página
contiene los 20 bits de más significativos que concatenados a la sección offset (12) nos da la
dirección de memoria física en la que está ubicada la página. Los demás bits contenidos en los
descriptores (tanto de tabla de páginas como de página) codifican información de acceso:
(entre otros)
P: bit de presencia en memoria
D: bit de página modificada
R/W: derechos de acceso lectura/escritura
U/S: bit de usuario/supervisor (equivaldrían a los privilegios de segmentación: usuario:11,
supervisor 00,01,10)
Con objeto de eludir todo este farragoso proceso de traducción hasta donde sea posible, se ha
creado dentro del procesador una TLB (32 entradas), es decir, una tabla con las direcciones
físicas de las páginas más accedidas. Con la dirección virtual se explora esta tabla por si
5
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
tuviérase la suerte de encontrarse ya traducida, en cuyo caso el ahorro de tiempo en el acceso a
memoria es considerable.
6
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
80486 1 millón de transistores (16MHz..33MHz)
-
-
Se mantienen los tamaños de registros y ancho de buses del 386
Se introduce la ejecución segmentada de las instrucciones (5 etapas de ejecución dando un
periodo por instrucción)
Se introduce memoria caché dentro del chip. (En 386 era externa).
(8k bytes 2-way associative 8k bytes para datos y para instrucciones)
Se introduce el coprocesador matemático dentro del chip (pero no como unidad funcional
sino como coprocesador, como dos chips en uno)
Se añaden los pins de paridad (4) (uno por vía de datos de 8 bits)
Se incorpora el ciclo burst en las lecturas: puede realizar cuatro ciclos de lectura de memoria
en tan sólo cinco periodo (2-1-1-1) cuando teóricamente se necesitan 8 (2-2-2-2) (Esta
modalidad de acceso sólo está prevista para cuatro accesos consecutivos)
Se añaden 6 nuevas instrucciones
Se aumenta la frecuencia de reloj al doble
Control de A20 mediante un pin de entrada activo a nivel bajo
7
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
Pentium 3.1 millones de transistores (60MHz..200MHz)
-
-
-
Se introduce la técnica super escalar. (2 pipelines de cinco etapas cada uno -seguidos del
pipeline de la unidad fp con tres etapas más) Uno de los cauces, V, ejecuta instrucciones
simples (INC DEC ADD SUB MUL...) y está cableado, el otro, U, ejecuta las instrucciones
complejas (REP STOW...) y está microprogramado.
Bus de datos de 64 bits. Mantiene el uso de las señal A20Mask, para habilitar el uso de A20.
2 caché internas Una para datos y otra para instrucciones, esta última de sólo lectura
El coprocesador interno se ha acelarado al incorporar la segmentación (10 veces el del 486)
Lógica de predicción de saltos
Permite trabajar con páginas de 4k (manteniendo la compatibilidad con 386 y 486) o con
páginas de 4M.
Incorpora 2 conjuntos de TLB, uno para código y otro para datos. La TLB de datos tiene 64
entradas para páginas de 4k o 8 para páginas de 4M. La TLB de instrucciones tiene32
entradas para páginas de 4K. (386/486 tenían una única tabla de 32 entradas para datos y
código simultáneamente)
Es posible realizar ciclos burst de escritura de memoria, además de lectura.
Contiene la lógica para trabajar con otro procesador en un entorno multiprocesador.
Contiene la lógica para trabajar con una caché externa como segundo nivel de cache L2
(Definición:Tecnologia overdrive: permitir que el procesador trabaje a mayor frecuencia de la que le
correspondería según la placa madre en la que está insertado)
8
Buses y Periféricos. 99/00
Familia x86. EvoluciónFamilia 8086
Pentium pro. 5.5 millones de transistores. (150MHz..200MHz)
-
-
introduce el concepto de dual cavity: Incluye la L2 en el mismo empaquetamiento físico,
aunque técnicamente está separada del procesador. 256Kb. Manteniendo la caché internas
(8k+8k).
Se aproxima en concepto a los procesadores RISC: Las instrucciones tradicionales 8086 se
decodifican en subinstrucciones internas que son las que realmente se ejecutan en los cauces
de segmentación. Todas las instrucciones internas tienen un formato triádico lo que conlleva
la introducción de una gran cantidad de registros internos en los que mantener los datos con
los que trabajan estas instrucciones.
- Es un procesador supersegmentado porque los cauces se desarrollan en 12 ( frente a las
cinco hasta ahora) etapas
- Es un procesador superescalar porque contiene varias unidades de ejecución simultánea.
- Admite ejecución fuera de orden (especulativa), aunque no en accesos de escritura a
memoria.
- Gestiona la predicción de los saltos.
Tecnología MMX. (multimedia extensión)
Se refiere a una posible extensión de las capacidades de los procesadores para adaptarse mejor a entornos
multimedia. Ello se logra incorporando funciones propias de un DSP (Proceso digital de señales)
Cuando la tienen incorporada, la sección mmx del procesador comparte los registros con la unidad de
punto flotante (o coprocesador matemático).
-
Register aliasing: Utiliza los mismos registros que el coprocesador. Cuando la instrucción es
del tipo mmx la batería de registros es aludida con una referencia y cuando la instrucción es
de tipo fp, el mismo conjunto de registros es aludido con otro nombre. Es por ello necesario
que no se mezclen ambos tipos de instrucciones sin un previo vaciado del conjunto de
registros.
-
Maneja 4 tipos de datos sobre un registro de 64 bits.
- Cuádruple palabra 64 bits
- Doble palabra empaquetada 2x32 bits
- Palabra empaquetada 4*16 bits
- Byte empaquetado 8x8 bits
-
Incorpora hasta 57 nuevas instrucciones específicas mmx.
Ref: The 8086 IBMPC and compatible computers (vol II) Design and interfacing of the IBMPC, PS and
compatibles. Third edition.
Prentice Hall
Muhamad Ali Mazidi
Janice Gillispie Mazidi
9
Descargar