EL MICROPROCESADOR Y SU ARQUITECTURA.pdf
EL MICROPROCESADOR Y SU ARQUITECTURA.pdf
EL MICROPROCESADOR Y SU ARQUITECTURA.pdf
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<strong>EL</strong> <strong>MICROPROCESADOR</strong> Y <strong>SU</strong><br />
<strong>ARQUITECTURA</strong><br />
Los modos de direccionamiento son parte<br />
esencial de la arquitectura y operación de<br />
un microprocesador. La memoria en modo<br />
real (memoria DOS) existe en las<br />
localidades 00000H-FFFFFH –el primer<br />
mega byte de memoria del sistema- y se<br />
encuentra presente en todas las versiones<br />
del microprocesador. La memoria de modo<br />
protegido (memoria de Windows) existe en<br />
todas las localidades de memoria del<br />
sistema completo, pero se encuentra<br />
disponible sólo para procesadores desde el<br />
80286 hasta el Pentium. La capacidad de<br />
dicha memoria ya se comentó con<br />
antelación.
<strong>ARQUITECTURA</strong> INTERNA DE UN<br />
PROCESADOR 8086 Y LA EJECUCIÓN<br />
DE UN PROGRAMA<br />
Segmento<br />
de código<br />
Segmento<br />
de datos<br />
Segmento<br />
extra<br />
Segmento<br />
de pila
LA MICRO<strong>ARQUITECTURA</strong> <strong>SU</strong>PERESCALAR<br />
La microarquitectura superescalar utiliza el paralelismo de<br />
instrucciones además del paralelismo de flujo, éste último<br />
gracias a la estructura en pipeline. La estructura típica de<br />
un procesador superescalar consta de un pipeline con las<br />
siguientes etapas:<br />
‣Lectura (fetch). Múltiples instrucciones son capturadas<br />
de forma simultánea, utilizando técnicas de predicción de<br />
saltos y ejecución espelativa.<br />
‣Decodificación (decode). La cual se da en dos pasos, i)<br />
precodificación entre la memoria y la caché para<br />
identificación de saltos, y ii) Determinación de la<br />
operación, localización de operandos y localización del<br />
resultado.<br />
‣Lanzamiento (dispatch). Identificación de las<br />
instrucciones de la cola que están listas para comenzar su<br />
ejecución, o sea que tienen sus dependencias satisfechas.<br />
‣Emisión (issue). Forma parte de la etapa anterior, en<br />
conjunto se denotan como la ventana de ejecución.<br />
‣Ejecución (execute). En paralelo, en diferentes<br />
unidades funcionales.<br />
‣Escritura (writeback).<br />
‣Finalización (retirement). El resultado es confirmado en<br />
su destino
PIP<strong>EL</strong>INE SIMPLE EN PROCESADORES<br />
<strong>SU</strong>PERESCALARES<br />
Un máximo de 2<br />
instrucciones por ciclo<br />
pueden completarse.
MICRO<strong>ARQUITECTURA</strong> D<strong>EL</strong><br />
<strong>MICROPROCESADOR</strong> 80386
MICRO<strong>ARQUITECTURA</strong> D<strong>EL</strong> PENTIUM<br />
El coprocesador matemático opera 4 veces más rápido que en el 80486. La lógica de predicción de saltos<br />
permite a los programas saltos de ejecución más eficientes.
PROCESADORES PENTIUM IV<br />
Willamette<br />
Northwood<br />
Prescott
DIAGRAMA SIMPLIFICADO DE UN<br />
PROCESADOR PENTIUM<br />
CICLO DE EJECUCIÓN DE<br />
INSTRUCCIONES<br />
Búsqueda: la unidad de control busca la<br />
instrucción en la cola de instrucciones e<br />
incrementa el apuntador de instrucciones.<br />
Decodificación: la unidad de control<br />
decodifica la función de la instrucción para<br />
determinar lo que ésta debe hacer. Los<br />
operandos de entrada de la instrucción se<br />
pasan a la ALU, y se envían señales a la<br />
ALU para indicar la operación que se va a<br />
realizar.<br />
Búsqueda de operandos: si la<br />
instrucción utiliza un operando de entrada<br />
ubicado en memoria, la unida de control<br />
utiliza la operación de lectura para obtener<br />
el operando y copiarlo en os registros<br />
internos, Estos registros no son visibles<br />
para los programas de los usuarios.<br />
Ejecución: la ALU ejecuta la instrucción,<br />
utilizando los registros con nombre y los<br />
registros internos como operandos, y<br />
envía el resultado a los registros con<br />
nombre y a la memoria. La ALU actualiza<br />
las banderas de estado que proporcionan<br />
información acerca del estado del<br />
procesador.<br />
Almacenamiento del operando del<br />
resultado: si el operando de resultante<br />
están en memoria, la unidad de control<br />
utiliza una operación de escritura para<br />
almacenar el dato.<br />
Código<br />
Datos<br />
Caché de código<br />
Decodificador de<br />
instrucciones<br />
Unidad de control<br />
Registros<br />
ALU<br />
Caché de código<br />
Decodificador de<br />
instrucciones<br />
Unidad de punto flotante
CICLO DE EJECUCIÓN DE<br />
INSTRUCCIONES<br />
La secuencia de pasos para la ejecución de una<br />
instrucción comprende los siguientes puntos:<br />
Iterar<br />
‣Obtener la siguiente instrucción [Fetch]<br />
‣Avanzar el apuntador de instrucciones (IP)<br />
‣Decodificar la instrucción [Decode]<br />
‣Si se necesita un operando de memoria, leer el<br />
valor de la memoria<br />
‣Ejecutar la instrucción [Execute]<br />
‣Si el resultado es un operando en memoria,<br />
escribir el resultado en la memoria [Write]<br />
Continuar el ciclo
<strong>EL</strong> MOD<strong>EL</strong>O DE PROGRAMACIÓN D<strong>EL</strong><br />
INT<strong>EL</strong> 8086 AL PENTIUM 4<br />
La figura muestra el<br />
modelo de programación<br />
de los procesadores<br />
desde el 8086 hasta el<br />
pentium.
General Purpose Registers: The main functions are listed.<br />
EAX: Accumulator : Referenced as EAX, AX, AL or AH.<br />
Used for mult, div, etc.<br />
Used to hold an offset.<br />
EBX: Base Index :<br />
Used to hold the offset of a data pointer.<br />
ECX: Count :<br />
Used to hold the count for some instructions, REP and LOOP.<br />
Used to hold the offset of a data pointer.<br />
EDX: Data :<br />
Used to hold a portion of the result for mult, of the operand for div.<br />
Used to hold the offset of a data pointer.<br />
EBP: Base Pointer :<br />
Holds the base pointer for memory data transfers.<br />
EDI: Destination Index :<br />
Holds the base destination pointer for string instructions.<br />
ESI: Source Index :<br />
Holds the base source pointer for string instructions.<br />
Programmer Visible Architecture<br />
Special Purpose Registers:<br />
EIP: Instruction Pointer :<br />
Points to the next instruction in a code segment.<br />
16-bits (IP) in real mode and 32-bits in protected mode.<br />
ESP: Stack Pointer :<br />
Used by the stack, call and return instructions.<br />
EFLAGS :<br />
Store the state of various conditions in the microprocessor.
Programmer Visible Architecture<br />
•Special Purpose Registers:<br />
•EFLAGS Register:<br />
•The rightmost 5 flag bits and overflow change after many of the arithmetic and logic<br />
instructions execute. Data transfer and control instructions never change the flags.<br />
a.C (Carry) :<br />
•Holds the carry out after addition or the borrow after subtraction.<br />
•Also indicates error conditions.<br />
b.P (Parity) :<br />
•0 for odd number of bits and 1 for even.<br />
•Obsolete feature of the 80x86.<br />
c.A (Auxiliary Carry) :<br />
•Highly specialized flag used by DAA and DAS instructions after BCD addition or<br />
subtraction.<br />
Programmer Visible Architecture<br />
•Special Purpose Registers:<br />
b.EFLAGS (cont).<br />
c.Z (Zero) :<br />
•1 if the result of an arithmetic or logic instruction is 0.<br />
d.S (Sign) :<br />
•1 if the sign of the result of an arith. or logic instruction is negative.<br />
e.T (Trap) :<br />
•Trap enable. The microprocessor interrupts the flow of instructions on conditions<br />
indicated by the debug and control registers.
I (Interrupt) :<br />
Controls the operation of the INTR (Interrupt request)<br />
pin. If 1, interrupts are enabled. Set by STI and CLI<br />
instructions.<br />
D (Direction) :<br />
Selects with increment or decrement mode for the DI<br />
and/or SI registers during string instructions. If 1,<br />
registers are automatically decremented. Set by STD<br />
and CLD instructions.<br />
O (Overflow) :<br />
Set for addition and subtraction instructions.
MODO DE DIRECCIONAMIENTO EN<br />
MODO REAL<br />
Recordando que el 80286 en adelante<br />
operan en modo real o bien modo<br />
protegido. Sólo el 8086 y 8088 operan en<br />
modo real. En modo real, el procesador<br />
direcciona solamente el primer Mega byte<br />
de espacio de memoria. Windows no<br />
utiliza el modo real. En el modo 8086<br />
virtual, la computadora se ejecuta en<br />
modo protegido y crea una máquina 8086<br />
virtual con su espacio de direcciones de 1<br />
MB (ventana de comandos).<br />
Una combinación de una dirección del<br />
segmento y una dirección de offset<br />
pueden acceder a las localidades de<br />
memoria. Todas las direcciones de<br />
memoria deben de consistir de<br />
direcciones de memoria mas una<br />
dirección de offset.<br />
La dirección del segmento se encuentra alojada dentro de un registro de segmento, define la<br />
dirección inicial del segmento de memoria de 64K. Mientras que la dirección de offset selecciona<br />
cualquier localidad dentro de los 64k internos al segmento.
Registros de<br />
segmento<br />
EJEMPLOS DE DIRECCIONES DE<br />
SEGMENTOS EN MODO REAL<br />
Dirección de<br />
inicio<br />
Dirección<br />
final<br />
2000H 20000H 2FFFFH<br />
2001H 20010H 3000FH<br />
2100H 21000H 30FFFH<br />
AB00H AB000H BAFFFH<br />
1234H 12340H 2233FH<br />
El registro del segmento de código siempre es<br />
utilizado con el apuntador de instrucción para<br />
direccionar la siguiente instrucción en un programa.<br />
Esta combinación CS:IP o CS:EIP dependerá del<br />
modo de operación del microprocesador. El registro<br />
de segmento de código define el inicio del<br />
segmento de código y el apuntador de instrucción<br />
localiza la siguiente instrucción dentro del código<br />
del segmento. En el caso del modo real, si<br />
CS=1400H y IP/EIP=1200H, el microprocesador<br />
captura la siguiente instrucción en<br />
14000H+1200H=15200H.<br />
Combinaciones por omisión de segmentos de 16 bits y offset<br />
Segmento Offset Propósito especial<br />
CS IP Dirección de la instrucción<br />
SS SP o BP Dirección del stack<br />
DS DX, DI, SI, un número entre 8 y 16 bits Dirección de datos<br />
ES DI para cadena de instrucciones Dirección de cadena destino
COMBINACIONES DE SEGMENTOS Y<br />
OFFSET POR OMISIÓN DE 32 BITS<br />
A continuación se ilustran los registros por omisión<br />
considerados en el 80386 y posteriores utilizando<br />
registros de 32 bits.<br />
Segmento Offset<br />
Propósito especial<br />
CS EIP Dirección de<br />
instrucción<br />
SS ESP o EBP Dirección del stack<br />
DS<br />
ES<br />
EAX, EBX, ECX,<br />
EDX, ESI, EDI, un<br />
número de 8 o 32<br />
bits<br />
EDI para<br />
instrucciones de<br />
cadena<br />
Dirección de datos<br />
Dirección de destino<br />
de cadena<br />
FS No tiene Dirección genérica<br />
GS No tiene Dirección genérica
INTRODUCCIÓN AL DIRECCIONAMIENTO<br />
DE MEMORIA EN MODO PROTEGIDO<br />
El modo protegido es en donde Windows trabaja. Cuando los datos o<br />
programas se acceden en la memoria extendida, las direcciones del<br />
offset serán utilizadas para acceder a la información que se encuentra<br />
localizada dentro del segmento de memoria. Una diferencia es que la<br />
dirección del segmento, tal y como se discutió en el direccionamiento en<br />
modo real, no se encuentra en el modo protegido. En lugar de las<br />
direcciones de segmento, el registro de segmento contiene un selector<br />
que selecciona un descriptor de una tabla de descriptores. El descriptor<br />
describe la localización del segmento de memoria, longitud y accesos<br />
correctos. De hecho, la mayoría de los programas escritos para<br />
funcionar en el modo real funcionarán sin cambios en el modo<br />
protegido. La diferencia entre los modos está en la manera en la que el<br />
registro de segmento es interpretado por el microprocesador para<br />
acceder al segmento de la memoria. Otra diferencia, en el 80386 y<br />
posteriores, es que la dirección del offset puede ser un número de 32<br />
bits en lugar de un número de 16 bits en el modo protegido. Una<br />
dirección de offset de 32 bits permite al microprocesador acceder a<br />
datos dentro de un segmento que pueden estar por encima de los 4G<br />
Bytes en longitud. Para Microsoft Assembler, el modelo de memoria<br />
plano (directiva .MOD<strong>EL</strong>) es apropiado para la programación en este<br />
modo. Los registros de segmento apuntan a tablas de descriptores de<br />
segmentos, que el sistema operativo utiliza para llevar el registro de las<br />
ubicaciones de los segmentos individuales de un programa.<br />
MODO<br />
PROTEGIDO<br />
00000000H-FFFFFFFFH<br />
800000000H-FFFFFFFFH
S<strong>EL</strong>ECTORES Y DESCRIPTORES<br />
El selector, localizado en el registro de segmento, selecciona a uno de los 8192 descriptores<br />
de una de las dos tabla de descriptores. El descriptor describe la localización, longitud y<br />
derechos de acceso del segmento de memoria. Indirectamente el registro de segmento<br />
seleccionará un segmento de memoria, pero no de manera directa como lo hace en el modo<br />
real. Por ejemplo, en el modo real, si CS=0008H, el segmento de código comenzará en la<br />
localidad 00080H. En el modo protegido, este número de segmento puede direccionar<br />
cualquier localidad de memoria en el sistema completo para el segmento de código. Esto es.<br />
Existen dos tablas de descriptores:<br />
Contiene las definiciones de<br />
segmentos que se aplica a<br />
todos los programas.<br />
Descriptor de sistema.<br />
Contiene las definiciones de<br />
segmentos únicos para cada<br />
aplicación. Descriptor de la<br />
aplicación.<br />
Tabla de<br />
Descriptores<br />
globales<br />
Tabla de<br />
Descriptores<br />
locales<br />
Debido a que un segmento de<br />
memoria puede ser de hasta<br />
4Gigabytes de longitud, esto significa<br />
que una aplicación podría tener<br />
acceso a 4Gx16384=64T bytes de<br />
memoria.<br />
Cada una contiene 8192 descriptores, esto hace<br />
8192*2= 16384 descriptores disponibles para una<br />
aplicación determinada.
S<strong>EL</strong>ECTORES Y DESCRIPTORES<br />
En el modelo multisegmentos, cada<br />
tarea o programa recibe su propia tabla<br />
de descriptores de segmento, que puede<br />
ser distinto de los demás segmentos<br />
utilizados por otros procesos. Cada<br />
segmento tiene su propio espacio de<br />
direcciones. En la siguiente figura, cada<br />
entrada en la LDT apunta a un segmento<br />
distinto en la memoria. Cada descriptor<br />
de segmento especifica el tamaño<br />
exacto de su segmento. Por ejemplo, el<br />
segmento que empieza en 3000 tiene un<br />
tamaño de 2000 hexadecimal, que se<br />
calcula como (0002*1000 hexadecimal).<br />
El segmento que empieza en 8000 tiene<br />
el tamaño de A000 hexadecimal.<br />
Base Límite Acceso<br />
00026000 0010<br />
00008000 000A<br />
00003000 0002<br />
26000<br />
8000<br />
3000
DESCRIPTORES<br />
La siguiente figura muestra el formato de un descriptor para el 80286 hasta el Pentium 4.<br />
Notar que cada descriptor es de 8 bytes de longitud, de tal manera que las tablas de los<br />
descriptores son cada una de ellas de un máximo de 64K bytes de longitud.<br />
La porción de la dirección base del descriptor indica la localidad inicial del segmento de<br />
memoria. Para el microprocesador 80286, la dirección base es de 24 bits, de tal forma que<br />
los segmentos comienzan en alguna localidad en sus 16MB de memoria. Observar que el<br />
párrafo de limitación acotada no existe en estos procesadores cuando trabajan en modo<br />
protegido de tal manera que los segmentos pueden empezar en cualquier dirección. El<br />
80386 y superiores utilizan una dirección base de 32 bits que permite a los segmentos<br />
comenzar en cualquier localidad dentro de sus 4GBytes de memoria.
DESCRIPTORES<br />
El límite del segmento contiene las últimas direcciones offset encontradas en un<br />
segmento. Por ejemplo, si un segmento comienza en la localidad F00000H y termina en<br />
la localidad F000FFH, la dirección base es F00000H y el límite es FFH. Para el 80286, la<br />
dirección base es F00000H y el límite es 00FFH. Para el 80386 y superiores, la dirección<br />
base es 00F0000H y el límite es 000FFH. Nota que el 80286 tiene un límite de 16 bits y<br />
el 80386 hasta el Pentium 4 tienen un límite de 20 bits. Un 80286 accede a segmentos<br />
de memoria que se encuentran dentro de 1 a 64Kbytes de longitud; mientras que el<br />
80386 y superiores pueden acceder a segmentos de memoria que se encuentran entre 1<br />
y 1MByte, o 4K y 4G bytes de longitud.
DESCRIPTORES<br />
Existe otra característica que se encuentra en el descriptor del 80386 hasta el Pentium 4 que<br />
no existe en el del 80286: el bit de granularidad (bit G). Si G=0, el límite específica un límite de<br />
segmento de 00000H a FFFFFH. Si G=1, el valor del límite se multiplica por 4Kbytes (sumados<br />
a FFFH). El límite es entonces 00000FFFFH a FFFFFFFFH, si G=1. Esto permite una longitud<br />
de segmento de 4K a 4G bytes en pasos de 4Kbytes. La razón de esta longitud del segmento<br />
en el 80286 es que la dirección del offset siempre es de 16 bits debido a su arquitectura interna<br />
de 16 bits. El 80386 y superiores utilizan una arquitectura de 32 bits que permite una dirección<br />
de offset; en la operación de modo protegido, de los 32 bits. Esta dirección de 32 bits permite<br />
que los segmentos tengan longitud de 4Gbytes y la dirección offset de 16 bits permite<br />
longitudes de segmento de 64K bytes. Los sistemas operativos operan en el entorno de 16 y<br />
32 bits. Por ejemplo, MS-DOS utiliza el entorno de 16 bits, mientras que la mayoría de las<br />
aplicaciones de Windows utilizan el entorno de 32 bits, llamado WIN32.<br />
EJEMPLO<br />
El siguiente ejemplo muestra el segmento inicial y final considerando que la dirección base es<br />
10000000H, el límite es 001FFH, y el bit G=0.<br />
Base=Start=10000000H<br />
G=0<br />
End=Base+Limit=10000000H+001FFH=100001FFH
EJEMPLO 2<br />
El siguiente ejemplo muestra el segmento inicial y final considerando que la dirección base<br />
es 10000000H, el límite es 001FFH, y el bit G=1.<br />
Base=Start=10000000H<br />
G=0<br />
End=Base+Limit=10000000H+001FFFFFH=101FFFFFH
REGISTROS AV y D D<strong>EL</strong> DESCRIPTOR<br />
AV=1<br />
SEGMENTO<br />
DISPONIBLE<br />
AV=0<br />
El bit AV, se utiliza por<br />
algunos sistemas<br />
operativos para indicar LA<br />
DISPONIBILIDAD del<br />
segmento<br />
El bit D indica como estos<br />
procesadores acceden a los<br />
datos en memoria y los<br />
registros en modo real o<br />
protegido.<br />
D=1<br />
D=0<br />
Esto significa que las instrucciones<br />
utilizan direcciones de 16 bits de<br />
offset y registros de 16 bits por<br />
omisión.<br />
SEGMENTO NO<br />
DISPONIBLE<br />
MODO DE 32 bits<br />
Por omisión el modo de 32 bits<br />
considera que todos los offset de<br />
dirección y registros son de 32<br />
bits.<br />
MODO DE 16 bits<br />
O MODO DOS
El byte de derechos de acceso controla el<br />
acceso al segmento del modo protegido.<br />
Este byte indica como funciona el<br />
segmento en el sistema. Si el segmento<br />
es un segmento de datos, se especifica la<br />
dirección de crecimiento. Si el segmento<br />
crece hasta su límite, el programa del<br />
sistema operativo se interrumpe,<br />
indicando una falla de protección general.<br />
El segmento de código funciona de<br />
manera similar y ambos pueden ser<br />
habilitado o deshabilitados para escritura.<br />
DESCRIPTORES
<strong>EL</strong> REGISTRO DE SEGMENTO<br />
Los descriptores se seleccionan de la tabla de descriptores por el registro de segmento.<br />
El registro de segmento contiene un<br />
campo selector de 13 bits, un bit<br />
selector de tabla y un campo de<br />
nivel de privilegio requerido. Los<br />
niveles de privilegio se utilizan en<br />
esquemas multiusuario. Windows<br />
utiliza el nivel de privilegio 00 (ring<br />
0) para los programas de<br />
controladores y kernel y el nivel 11<br />
(ring 3) para las aplicaciones.<br />
Windows no utiliza los niveles de<br />
privilegio 01 o 10. Si alguien desea<br />
acceder a estos privilegios, el<br />
sistema operativo indica una<br />
violación en el nivel de privilegios.
<strong>EL</strong> REGISTRO DE SEGMENTO<br />
EJEMPLO. En este caso el<br />
registro de segmento,<br />
selecciona un descriptor de la<br />
tabla de descriptores globales.<br />
La entrada en la tabla de<br />
descriptores globales selecciona<br />
un segmento en la memoria del<br />
sistema. Como DS=0008H, el<br />
cual accede al número del<br />
descriptor 1 de la tabla de<br />
descriptores globales utilizando<br />
el nivel de privilegio requerido<br />
00.<br />
El número del descriptor 1 contiene un descriptor que define la dirección base como<br />
00100000H con un límite de segmento de 000FFH. Esto significa que un valor de 0008H en<br />
DS causa que el procesador utilice la localidad de memoria 00100000H-001000FFH para el<br />
segmento de datos con este ejemplo en la tabla de descriptores.
MEMORIA PAGINADA<br />
El mecanismo de memoria paginada que ha adoptado el 80386 y superiores permite que<br />
cualquier localidad de memoria física sea asignada a cualquier dirección lineal. La dirección<br />
física es la localidad de memoria actual a la que se accede por un programa. Con la unidad de<br />
paginación de memoria (MMU), la dirección lineal es invisiblemente traducida a cualquier<br />
dirección física, lo cual permite que una aplicación escrita funcione en una dirección específica<br />
para ser realojada por medio del mecanismo de paginación. Esto también permite que la<br />
memoria sea colocada en donde la memoria no existe. Un ejemplo lo representan los bloques<br />
de memoria superiores dados por el EMM386.EXE en el sistema DOS.<br />
En Windows cada aplicación se<br />
aloja en un espacio de<br />
direcciones lineales de 2Gbytes,<br />
en las localidades 00000000H-<br />
7FFFFFFFH aunque no pueda<br />
existir memoria disponible en<br />
estas direcciones. Realizando la<br />
paginación sobre el disco duro y<br />
paginación de memoria por<br />
medio de la unidad de paginación<br />
de memoria cualquier aplicación<br />
de Windows puede ser<br />
ejecutada.
<strong>EL</strong> ÁREA DE SWAP<br />
El área que el disco duro usa para memoria<br />
virtual es llamada “swap file”, pues intercambia<br />
(“swap”) datos, información e instrucciones entre<br />
la memoria y el almacenamiento. Una página<br />
(page) es la cantidad de datos e instrucciones que<br />
se pueden intercambiar en un momento dado. A la<br />
técnica de intercambiar entre memoria y<br />
almacenamiento se le llama “paging”. Cuando un<br />
sistema operativo está mucho tiempo haciendo<br />
“paging” en vez de ejecutando una aplicación, se<br />
dice que el sistema está “thrashing”.<br />
Por ejemplo, cuando se intenta acceder a<br />
una página del Internet, la página ya bajó,<br />
pero la luz del disco duro sigue encendida.<br />
Si el “thrashing” sucede con mucha<br />
frecuencia, es posible que la computadora<br />
necesite más RAM.
REGISTROS DE PAGINACIÓN<br />
La unidad de paginación es controlada por el contenido del registro de control del<br />
microprocesador<br />
Los registros importantes para la<br />
paginación son del CR0-CR3. El bit (PG)<br />
de la posición más hacia la izquierda de<br />
CR0 selecciona la página cuando se<br />
coloca en un nivel lógico 1. Si el bit PG se<br />
pone a 0, la dirección generada por el<br />
programa se convierte en una dirección<br />
física utilizada para acceder a la memoria.<br />
Si el bit PG se pone a 1, la dirección lineal<br />
se convierte en una dirección física por<br />
medio de los mecanismos de paginación.<br />
El mecanismo de paginación funciona<br />
tanto en modo real como protegido. CR3<br />
contiene el directorio de página base o la<br />
dirección raíz y los bits PCD y PWT<br />
ambos controlan la operación de las<br />
terminales del mismo nombre del<br />
procesador.
REGISTROS ESPECIALES D<strong>EL</strong> PENTIUM<br />
CD<br />
NW<br />
AM<br />
WP<br />
NE<br />
VME<br />
PVI<br />
TSD<br />
DE<br />
PSE<br />
MCE<br />
Cache disable. Este bit controla la caché interna. Si CD=1, la caché no se llenará con el nuevo dato para<br />
cachés misses, pero continuará funcionando para cachés hits. Si CD=0, misses causarán que la caché se<br />
llene con los nuevos datos.<br />
Not write-throught. Selecciona el modo de operación para la caché de datos. Si NW=1, la caché de datos se<br />
encuentra inhibida de la caché write-throught.<br />
Alignment mask. Habilita el choque de alineación cuando se encuentra habilitado. Notar que el chequeo de<br />
alineación solamente ocurre para operaciones de modo protegido cuando el usuario está en el nivel de<br />
privilegio 3.<br />
Write Protect. Protege a las páginas a nivel de usuario contra escritura a nivel supervisor. Cuando WP=1, el<br />
supervisor puede escribir a los segmentos de nivel usuario.<br />
Numeric error. Habilita la detección del error del coprocesador numérico. Si NE=1, el pin FERR se pone en<br />
modo de activación para denotar que ha ocurrido un error con el coprocesador matemático. Si NE=0,<br />
cualquier error en el coprocesador se ignora.<br />
Virtual mode extension. Habilita el soporte para la bandera de interrupciones en modo protegido. Si VME=0,<br />
el soporte para interrupciones virtuales se deshabilita.<br />
Protected Mode Virtual interrupt. Habilita el soporte para banderas de interrupción en modo protegido.<br />
Time Stamp Disable. Controla la instrucción RDTSC<br />
Debugging extension. Habilita las extensiones de depuración de punto de ruptura de I/O cuando se<br />
establece.<br />
Page size extension. Habilita las páginas de memoria de 4 M-byte cuando se establece.<br />
Machine check enable. Habilita la interrupción de cheque de la máquina.
Si PCD es 1, la terminal PCD se vuelve uno lógico durante los ciclos de bus que no están<br />
paginados. Esto permite que el hardware externo controle el nivel 2 de la memoria de caché<br />
(esta memoria es interna y de alta velocidad en el microprocesador que funciona como un<br />
buffer entre el microprocesador y la memoria DRAM del sistema). El bit PWT también<br />
aparece en la terminal PWT durante los ciclos del bus que no son paginados para controlar la<br />
escritura sobre la caché en el sistema. La dirección base del directorio de página localiza el<br />
directorio para la unidad de traducción de página. Esta dirección localiza el directorio página<br />
en cualquiera de los 4K en la frontera de la memoria del sistema debido a que se agrega de<br />
manera interna con 000H. El directorio de página contiene 1024 entradas de directorio de<br />
cuatro bytes cada una. Cada entrada del directorio de página direcciona una tabla de página<br />
que contiene 1024 entradas.<br />
La dirección lineal, como es generada por el software, se divide en tres secciones, que se<br />
utilizan para acceder a la entrada del directorio de página, la entrada de la tabla de página y<br />
la dirección de offset de la página de memoria.
Los 10 bits más significativos direccionan una<br />
entrada en el directorio de página. Para<br />
direcciones lineales 00000000H-003FFFFFH, la<br />
primera página de directorio es accedida. Cada<br />
entrada a la página de directorio representa o<br />
repágina una sección de 4MB del sistema de<br />
memoria.<br />
En la figura, si la entrada a la tabla de<br />
páginas es 0, contiene la dirección<br />
00100000H, entonces la dirección física es<br />
00100000H-00100FFFH para la dirección<br />
lineal 00000000H-00000FFFH. Esto significa<br />
que cuando el programa accede a una<br />
localidad entre 00000000H y 00000FFFH, el<br />
microprocesador físicamente direcciona a las<br />
localidades 00100000H-00100FFFH.<br />
El contenido del directorio página selecciona<br />
una tabla de página que se encuentra indexada<br />
en los siguientes 10 bits de la dirección lineal.<br />
Esto significa que las direcciones 00000000H-<br />
00000FFFH seleccionan una entrada al<br />
directorio de página 0 y una entrada a la tabla<br />
de página 0. Notar que representa un rango de<br />
direcciones de 4K-bytes.<br />
Debido al hecho de que la repaginación es de<br />
una sección de 4K-byte de memoria requiere<br />
acceder al directorio de página y una tabla de<br />
página, las cuales se encuentran en memoria.<br />
Intel ha incorporado un tipo especial de caché<br />
llamado el TLB.
TRANSLATION LOOK-ASIDE BUFFER (TLB)<br />
En el 80486 El TLB retiene las 32 más<br />
recientes direcciones de la traducción de<br />
página. Esto significa que las últimas<br />
traducciones se encuentran<br />
almacenadas en el TLB, de tal forma<br />
que si la misma área de memoria es<br />
accedida, la dirección se encuentra<br />
presente en el TLB, y el acceso al<br />
directorio de páginas y tablas de páginas<br />
no es necesario. Esto acelera la<br />
ejecución de un programa. Si una<br />
traducción no se encuentra en el TLB, el<br />
directorio de página y la tabla de página<br />
deben de accederse, lo que implica<br />
tiempo de ejecución adicional. Los<br />
microprocesadores Pentium-Pentium4<br />
contienen TLBs separadas para cada<br />
una de sus cachés de datos e<br />
instrucciones.
<strong>EL</strong> DIRECTORIO DE PÁGINA Y LA TABLA<br />
DE PÁGINA<br />
La siguiente figura muestra que el directorio de página contiene 1024 direcciones del tipo<br />
dobleword que localizan hasta 1024 tablas de página. El directorio de página y cada tabla de<br />
página son de 4K bytes de memoria en longitud. Si los 4G bytes completos de la memoria<br />
están paginados, el sistema debe de almacenar 4K bytes de memoria para el directorio de<br />
página, y 4K veces 1024 o 4Mbytes para las 1024 tablas de página. Esto representa un<br />
considerable conjunto de recursos de memoria.