22.11.2014 Views

EL MICROPROCESADOR Y SU ARQUITECTURA.pdf

EL MICROPROCESADOR Y SU ARQUITECTURA.pdf

EL MICROPROCESADOR Y SU ARQUITECTURA.pdf

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!