Está en la página 1de 21

Memoria Virtual(1)

Si ejecutamos un programa muy grande o un programa que accede a un conjunto de datos muy grande, todas las instrucciones y datos puedan ingresar en la memoria principal. La memoria virtual funciona como una cache para almacenamiento secundario.

Memoria Virtual(2)
Esta memoria explota el principio de localidad espacial y temporal. Esta memoria mantiene las partes activas de los programas en ejecucin en la memoria principal.

Memoria Virtual(3)
Espacio Swap aquellas partes que estn desocupadas son mantenidas en un bloque de almacenamiento secundario. Pginas Bloques de datos e instrucciones.
Normalmente estas son relativamente muy grandes. La mayora de los sistemas tienen un tamao fijo que comnmente ocupan rangos de 4 a 16 kilobytes.

programa A

Memoria Virtual(4) principal Memoria

programa B

programa C

Nmeros de pgina virtual


Cuando un programa se compila sus pginas son asignadas a nmeros de pgina virtual. Cuando el programa esta en ejecucin, se crea una tabla que mapea los nmeros de pgina virtual a direcciones fsicas. Una tabla de pgina se usa para traducir la direccin virtual en una direccin fsica.

Tabla de pgina

Tabla 2.2: Direccin virtual dividida en nmero de pgina virtual y byte traducido

Buffer de traduccin lookaside (TLB)


Usar una tabla de pgina tiene el poder de incrementar significativamente cada uno de los programas completos en tiempo de ejecucin. Una cache de traduccin especial de direccin en el procesador.

Buffer de traduccin lookaside (TLB)


Este mantiene en cache un pequeo nmero de entradas (generalmente 16 - 512) desde la tabla de pgina en memoria muy rpida. Pgina falla intenta accesar a una direccin fsica vlida para una pgina en la tabla de pginas pero la pgina solamente est almacenada en disco.

Paralelismo a nivel de Instruccin (IPL)


Intenta mejorar el desempeo del procesador al poseer componentes de procesador mltiple o unidades funcionales ejecutando instrucciones simultneamente.

Paralelismo a nivel de Instruccin (IPL)(2)


Pipelining Unidades funcionales estn arregladas en etapas. Caso mltiple instrucciones mltiples pueden ser simultneamente iniciadas.

Pipelining

Ejemplo de Pipelining (1)

sumar los nmeros en punto flotante 9.87104 y 6.54103

Ejemplo de Pipelining (2)

Asumiendo que cada operacin toma un nanosegundo (10-9 segundos) Este bucle for toma aproximadamente 7000 nanosegundos.

Pipelining (3)
Divide el sumador de punto flotante en 7 piezas separadas de hardware o unidades funcionales. La primera unidad va por los dos operandos, la segunda unidad compara exponentes, etc. La salida de una unidad funcional es la entrada a la siguiente.

Pipelining (4)

Table 2.3: Suma con pipelining. Los nmeros en la tabla son subscripciones de operandos/resultados

Pipelining (5)
Una suma en punto flotante aun toma 7 nanosegundos. Pero 1000 sumas en punto flotante ahora toma 1006 nanosegundos.

Caso mltiple
En el caso mltiple, los procesadores replican las unidades funcionales e intentan simultneamente ejecutar diferentes instrucciones en un programa. for (i = 0; i < 1000; i++) z[i] = x[i] + y[i];
z[3] z[1] adder #1 z[4] z[2] adder #2

Caso mltiple(2)
Caso mltiple esttico las unidades funcionales son planificadas en tiempo de compilacin. Caso mltiple dinmico unidades funcionales son planificadas en tiempo de ejecucin.

superscalar

Especulacin(1)
En funcin de hacer uso de mltiples casos, el sistema debera encontrar instrucciones que puedan ser ejecutadas simultneamente. En la especulacin, el compilador o el procesador hacen una suposicin acerca de una instruccin y luego ejecuta las instruccin sobre la base de la suposicin.

Especulacin(2)
z=x+y; i f ( z > 0) w=x; else w=y;

Z ser positivo

Si el sistema especula incorrectamente, este debera regresar y recalcular w=y

También podría gustarte