Anda di halaman 1dari 14

Instituto de Ingeniera - UNAJ

Jerarqua de Memoria

Ctedra de Organizacin y Arquitectura de Computadores Ingeniera Informtica

Autore: Ing. Jorge R. Osio

Abril de 2013
Jerarqua de Memoria

Versin 1.0
Pgina 1

Seccin I

Jerarqua de Memorias

Ctedra de Organizacin y Arquitectura de Computadores

Jerarqua de Memoria

Pgina 2

INDICE.
1. Jerarqua de Memoria 2. Memoria CACHE
2.1.Impacto de la localidad temporal 2.2.Impacto de la localidad Espacial 2.3.Impacto combinado de la localidad temporal y espacial 2.4.Organizacin de la memoria cache.

Jerarqua de Memoria

Pgina 3

Introduccin

Jerarqua de Memoria

Pgina 4

1. Jerarqua de memoria
Una jerarqua de memoria tpica comienza con una unidad pequea, cara, y relativamente rpida, llamada la memoria cach, seguida por una unidad de memoria principal ms grande, menos costosa, y relativamente lenta. La Cach y la memoria principal se construyen utilizando material semiconductor de estado slido (normalmente transistores CMOS). Es comn llamar al nivel de memoria rpida la memoria primaria. La memoria de estado slido es seguida por memoria ms grande, menos costosa, y memorias magnticas mucho ms lentas que consisten tpicamente en el disco (duro) y la cinta. Es comn llamar al disco memoria secundaria, mientras que la cinta se llama convencionalmente memoria terciaria. El objetivo detrs del diseo de una jerarqua de memoria es tener un sistema de memoria que se comporta como si consistiera ntegramente de la unidad ms rpida y cuyo costo est dominado por el costo de la unidad ms lenta. La jerarqua de memoria se puede caracterizar por una serie de parmetros. Estos parmetros son el tipo de acceso, la capacidad, el tiempo de ciclo, la latencia, el ancho de banda, y el costo. El acceso se refiere a la accin que se lleva a cabo fsicamente durante una operacin de lectura o escritura. La capacidad de un nivel de memoria por lo general se mide en bytes. El tiempo de ciclo se define como el tiempo transcurrido desde el inicio de una operacin de lectura hasta el inicio de una lectura posterior. La latencia se define como el intervalo de tiempo entre la solicitud de informacin y el acceso al primer bit de la informacin. El ancho de banda proporciona una medida del nmero de bits por segundo que puede ser accedido. El costo de un nivel de memoria por lo general se especifica en dlares por megabytes. El trmino acceso aleatorio se refiere al hecho de que cualquier acceso a cualquier ubicacin de memoria necesita la misma cantidad de tiempo fijo, independientemente de la ubicacin real de la memoria y / o la secuencia de accesos que se lleva a cabo. Por ejemplo, si una operacin de escritura a la posicin de memoria 100 toma 15 ns y si esta operacin es seguida por una operacin de lectura a la posicin de memoria 3000, entonces la ltima operacin tambin tomar 15 ns. Esto se puede comparar con el acceso secuencial en el que el acceso a la ubicacin 100 toma 500 ns, y un acceso consecutivo a la ubicacin 101 toma 505 ns, entonces se espera que un acceso a la ubicacin 300 demande 1.500 ns. Esto es debido a que la memoria tiene que desplazarse a travs de ubicaciones 100 a 300, por cada ubicacin donde se requieren 5 ns. Jerarqua de Memoria Pgina 5

La eficacia de una jerarqua de memoria depende del principio de mover la informacin a la memoria rpida con poca frecuencia y acceder a ella muchas veces antes de realizar la sustitucin por nueva informacin. Este principio es posible debido a un fenmeno llamado localidad de referencia, es decir, dentro de un perodo determinado de tiempo, los programas tienden a hacer referencia a un rea relativamente confinada de memoria repetidamente. Existen dos formas de localidad, la localidad espacial y temporal. La Localidad espacial se refiere al fenmeno de que cuando se ha hecho referencia a una direccin dada, es muy probable que se haga referencia a las direcciones ms cercanas en un corto perodo de tiempo; por ejemplo, instrucciones consecutivas en un programa secuencial sin saltos. La Localidad temporal, por otra parte, se refiere al fenmeno de que una vez que se ha hecho referencia a un tem de memoria particular, es ms probable que se haga referencia a dicho tem nuevamente a continuacin; por ejemplo, una instruccin en un bucle de programa. La secuencia de eventos que tiene lugar cuando el procesador realiza una solicitud a un elemento es la siguiente. En primer lugar, el elemento se busca en el primer nivel de la memoria de la jerarqua de memoria. La probabilidad de encontrar el elemento solicitado en el primer nivel se denomina la proporcin de aciertos, h1. La probabilidad de no encontrar (falla) el elemento solicitado en el primer nivel de la jerarqua de memoria se llama proporcin de falla (1 - h1). Cuando el elemento solicitado tiene una "fralla" se busca en el siguiente nivel de memoria posterior. La probabilidad de encontrar el elemento solicitado en el segundo nivel de memoria, est dado por la proporcin de aciertos del segundo nivel h2. La proporcin de falla en el segundo nivel de memoria es (1 - h2). El proceso se repite hasta que encontrar el elemento. Al encontrar el elemento solicitado, se copia y se enva al procesador. En una jerarqua de memoria que consta de tres niveles, el tiempo de acceso medio a la memoria se puede expresar de la siguiente manera:

El tiempo de acceso promedio de un nivel de memoria se define como el tiempo necesario para acceder a una palabra en ese nivel. En esta ecuacin, t1, t2, t3 representan, respectivamente, los tiempos de acceso de los tres niveles.

2. Memoria CACHE
La memoria cach debe su introduccin a Wilkes en 1965. En ese momento, Wilkes se distingue entre dos tipos de memoria principal: La convencionales y la memoria de slave. Jerarqua de Memoria Pgina 6

En la terminologa Wilkes, una memoria slave es un segundo nivel de memoria de alta velocidad convencional, que en la actualidad corresponde a lo que se llama la memoria cache (el trmino cache significa: un lugar seguro para esconder o almacenar cosas). La idea detrs de usar una memoria cach como el primer nivel de la jerarqua de memoria es para mantener la informacin que deba utilizarse con ms frecuencia por la CPU en la memoria cach, la cual es una pequea memoria de alta velocidad que est cerca de la CPU. El resultado final es que en un momento dado una parte activa de la memoria principal se duplica en la memoria cach. Por lo tanto, cuando el procesador realiza una solicitud a una referencia a la memoria, la solicitud se busca primero en la memoria cach. Si la solicitud corresponde a un elemento que actualmente reside en la cach, la llamamos un acierto de cach. Por otro lado, si la solicitud corresponde a un elemento que no est actualmente en la memoria cach, la llamamos error de cach. Una proporcin de aciertos de cach, hc, se define como la probabilidad de encontrar el elemento solicitado en la cach. Una relacin de falla de cache (1- hc) se define como la probabilidad de no hallar el elemento solicitado en la cach. En el caso de que el elemento solicitado no se encuentre en la memoria cach, tiene que ser trado de un nivel de memoria subsiguiente en la jerarqua de memoria. Suponiendo que existe el elemento en el siguiente nivel de memoria, es decir, la memoria principal, entonces tiene que ser copiado y se coloca en la memoria cach. Con la expectativa de que el siguiente elemento solicitado resida en la localidad vecina del elemento solicitado actual (localidad espacial), luego de un fallo de cach lo que realmente se copia de la memoria principal es un bloque de elementos que contiene el elemento solicitado. La ventaja de la transferencia de un bloque de la memoria principal a la memoria cach sera visible si se pudiera transferir tal bloque en el tiempo de acceso a la memoria principal. Esta posibilidad podra lograrse mediante el aumento de la velocidad a la que la informacin puede ser transferida entre la memoria principal y la memoria cach. Una posible tcnica que se utiliza para aumentar el ancho de banda es el entrelazado (intercalado) de memoria. Para lograr mejores resultados, se puede asumir que el bloque trado desde la memoria principal a la memoria cach, en un fallo de cach, se compone de elementos que se almacenan en diferentes mdulos de memoria, es decir, mediante el cual las direcciones consecutivas de memoria se almacenan en mdulos de memoria sucesivas. La figura siguiente ilustra el caso simple de una memoria principal que consta de ocho mdulos de memoria. Se supone en este caso que el bloque consta de 8 bytes.

Jerarqua de Memoria

Pgina 7

Figura 1. Entrelazado de memoria usando 8 mdulos Despus de haber introducido la idea bsica que lleva a la utilizacin de una memoria cach, nos gustara evaluar el impacto de la localidad temporal y espacial en el rendimiento de la jerarqua de memoria. Para hacer este tipo de evaluacin, limitaremos nuestra aplicacin a un caso simple de una jerarqua que consta slo de dos niveles, es decir, la memoria cach y la memoria principal. Se supone que el tiempo de acceso a la memoria principal es t m y el tiempo de acceso a la cach es t c. Vamos a medir el impacto de la localidad en cuanto al tiempo de acceso medio, que se define como el tiempo medio necesario para acceder a un elemento (una palabra) solicitada por el procesador de tal jerarqua de dos niveles.

2.1.Impacto de la localidad temporal En este caso, se supone que las instrucciones de bucles en un programa, que se ejecutan en muchas ocasiones, por ejemplo, n veces, una vez cargadas en la memoria cach, se utilizan ms de una vez antes de ser reemplazadas por nuevas instrucciones. El tiempo medio de acceso, tav, en este caso est dado por

Jerarqua de Memoria

Pgina 8

Al derivar la expresin anterior, se supone que el elemento de memoria solicitado ha provocado un fallo de bsqueda en cach, lo que conduce a la transferencia de un bloque de memoria principal en el tiempo tm. Despus de eso, se realizaron n accesos al mismo elemento, en donde cada uno consumi un tiempo t c. La expresin anterior revela que a medida que el nmero de accesos al mismo elemento, n, aumenta, disminuye el promedio de tiempo de acceso, lo que es una caracterstica deseable de la jerarqua de memoria. 2.2.Impacto de la localidad Espacial En este caso, se asume que el tamao del bloque transferido desde la memoria principal a la memoria cach, luego de un fallo de bsqueda en la cach, es de m elementos. Tambin asumimos que debido a la localidad espacial, fueron solicitados los m elementos, uno a la vez, por el procesador. Con base en estos supuestos, el tiempo promedio de acceso, tav, est dado por

Al derivar la expresin anterior, se supone que el elemento de memoria solicitado ha tenido un fallo de bsqueda en la cache, lo que conduce a la transferencia de un bloque de memoria principal, que consta de m elementos, en el tiempo t m. Despus de eso, se hicieron m accesos, cada una a uno de los elementos que constituyen el bloque,. La expresin anterior revela que a medida que el nmero de elementos en un bloque, m, aumenta, disminuye el tiempo de acceso medio, una caracterstica deseable de la jerarqua de memoria. 2.3.Impacto combinado de la localidad temporal y espacial En este caso, se supone que el elemento solicitado por el procesador tiene un fallo en la memoria cach que conduce a la transferencia de un bloque, que consta de m elementos, a la memoria cach (que lleva t m). Ahora, debido a la localidad espacial, el procesador requiere ejecutar todos los elementos que constituyen un bloque m, uno a la vez, (lo que requiere mtc). Despus de eso, se accede al el elemento solicitado originalmente (n - 1) veces (localidad temporal), es decir, se produce un total de n veces el acceso a ese elemento. Con base en estos supuestos, el tiempo de acceos medio, t av, est dado por

Jerarqua de Memoria

Pgina 9

Suponiendo que tm es de mtc. La expresin queda:

2.4.Organizacin de la memoria cache. Existen tres diferentes tcnicas de organizacin utilizadas para la memoria cach. Las tres tcnicas se discuten a continuacin. Estas tcnicas difieren en dos aspectos principales: 1. El criterio utilizado para la ubicacin, en la memoria cach, de un bloque entrante desde la memoria principal. 2. El criterio utilizado para reemplazar un bloque de cach por un bloque de entrada (en cach completo). Mapeo directo: Este es el ms simple entre las tres tcnicas. Su simplicidad deriva del hecho de que se coloca un bloque de memoria principal entrante en una ubicacin especfica de un bloque de cach fijo. La ubicacin se realiza sobre la base de una relacin fija entre el nmero de bloque entrante, i, el nmero de bloque de cach, j, y el nmero de bloques de cach, N:

Ejemplo 1: Consideremos, por ejemplo, el caso de una memoria principal que consta de bloques de 4K, una memoria cach que consta de 128 bloques, y un tamao de bloque de 16 palabras. La Figura siguiente muestra la divisin de la memoria principal y la memoria cach segn la tcnica de cach de asignacin directa. Como muestra la figura, hay un total de 32 bloques de memoria principal que se asignan a un bloque de cach determinado. Por ejemplo, los bloques de memoria principal 0, 128, 256, 384,. . . , 3968 se asignan al bloque 0 de la cache. Por ello, llamamos tcnica de asignacin directa a una tcnica de asignacin de varios a uno. La principal ventaja de la tcnica de asignacin directa es su simplicidad para determinar dnde colocar un bloque de memoria principal de entrada en la cach. Su principal desventaja es el uso ineficiente de la memoria cach. Esto es porque de acuerdo con esta tcnica, un nmero de bloques de memoria principal puede competir por un bloque de cach determinado incluso si existen otros bloques de cach vacos. Esta desventaja puede llevar a lograr una proporcin de aciertos de cach baja.

Jerarqua de Memoria

Pgina 10

Figura 2. Mapeo de bloque de cache a bloque de memoria principal De acuerdo con la tcnica de asignacin directa la MMU interpreta la direccin emitida por el procesador dividiendo la direccin en tres campos como se muestra en la Figura anterior. Las longitudes, en bits, de cada uno de los campos son: 1. Campo palabra = log2 B, donde B es el tamao del bloque es palabras. 2. Campo bloque = log2 N, donde N es el tamao del bloque en la cache. 3. Campo etiqueta = log2 (M/N), donde M es el tamao de la memoria principal en bloques. 4. El nmero de bits en la direccin de memoria principal = log2 (B x M) Cabe sealar que el nmero total de bits computado por las tres primeras ecuaciones debe agregarse a la longitud de la direccin de memoria principal. Esto se puede utilizar como un control para la correccin del clculo. Ejemplo 2: Calculo de los cuatro parmetros anteriores para el Ejemplo 1. Campo de palabra = log2 B = log2 16 = log2 24 = 4 bits Campo bloque = log2 N = log2 128 = log2 27 = 7 bits Campo etiqueta= log2(M/N) = log2(22 x 210/27) = 5 bits El nmero de bits en la direccin de memoria principal = log 2 (B x M) = log2 (24 x 212) = 16 bits.

Figura 3. Campos de direcciones de mapeo directo Jerarqua de Memoria Pgina 11

Mapeo asociativo: De acuerdo con esta tcnica, un bloque de memoria principal de entrada se puede colocar en cualquier bloque de cach disponible. Por lo tanto, la direccin emitida por el procesador slo necesita tener dos campos. Estos son los campos de palabra y etiqueta. El primero identifica el bloque durante su residencia en la memoria cach. El segundo campo identifica el elemento dentro del bloque que es solicitado por el procesador. La MMU interpreta la direccin emitida por el procesador dividindolo en dos campos tal como se muestra en la siguiente. La longitud, en bits, de cada uno de los campos estn dados por: 1. Campo palabra = log2 B, donde B es el tamao del bloque en palabras. 2. Campo etiqueta = log2 (M), donde M es el tamao de la memoria principal en bloques. 3. El nmero de bits en la direccin de memoria principal = log2 (B x M) Cabe sealar que el nmero total de bits computado por las dos primeras ecuaciones debe agregarse a la longitud de la direccin de memoria principal. Esto se puede utilizar como un control para la correccin de su clculo.

Figura 4. Campos de direccionamiento mapeo asociativo Ejemplo 3: Calcular los tres parmetros anteriores para un sistema de memoria que tiene la siguiente especificacin: tamao de la memoria principal es de bloques de 4K, el tamao de la memoria cach es de 128 bloques, y el tamao del bloque es de 16 palabras. Supongamos que el sistema utiliza la asignacin asociativa. Campo palabra = log2 B = log2 16 = log2 24 = 4 bits Campo etiqueta = log2 M = log2 27 x 210 = 12 bits El nmero de bit en la direccin de la memoria principal = log2 (B x M) = log2 (2 4 x 212) = 16 bits. Despus de haber mostrado la divisin de la direccin de memoria principal, ahora podemos proceder a explicar el protocolo utilizado por la MMU para satisfacer una peticin hecha por el procesador y as acceder a un elemento determinado. Presentamos el protocolo utilizando los parmetros indicados en el ejemplo presentado ms arriba. Los pasos del protocolo son: 1. Utiliza el campo Etiqueta para buscar en la memoria coincidencia de la etiqueta con cualquiera de las etiquetas almacenadas. Jerarqua de Memoria Pgina 12

2. Una coincidencia en la etiqueta de memoria indica que el bloque de cach especfica la correspondencia determinada en el paso 1 con el elemento de memoria principal solicitado por el procesador, es decir, un de acierto de cach. 3. Entre los elementos contenidos en el bloque de cach, el elemento apuntado se puede seleccionar utilizando el campo Palabra. 4. Si en el paso 2, no se encuentran coincidencias, entonces esto indica un error de cach. Por lo tanto, el bloque requerido tiene que ser trado desde la memoria principal, depositado en el primer bloque de cach disponible, y el elemento apuntado (palabra) se pone a disposicin del procesador. La etiqueta de la memoria cach y los bloques de la memoria cach en consecuencia tienen que actualizarse. Mapeo asociativo por conjuntos: En la tcnica de asignacin asociativa por conjuntos, la memoria cach se divide en un nmero de conjuntos. Cada conjunto consiste en un nmero de bloques. Un dado bloque de memoria principal a uno de memoria cach concreto se establece en funcin de la ecuacin s = i mod S, donde S es el nmero de conjuntos en la memoria cach, i es el nmero de bloques de la memoria principal, y s es el nmero de conjuntos de la cach, e i es el nmero de bloques de la memoria principal. Sin embargo, una llamada de bloque entrante se asigna a cualquier bloque en el conjunto correspondiente de cache. Por lo tanto, la direccin emitida por el procesador se divide en tres campos distintos. Se trata de la etiqueta, el conjunto, y los campos de palabra. El campo conjunto se utiliza para identificar de forma nica el conjunto de cach especfico que idealmente debe cdontener el bloque de objetivo. El campo de etiqueta identifica de forma exclusiva el bloque deseado dentro del conjunto determinado. El campo Palabra identifica el elemento (palabra) dentro del bloque solicitado por el procesador. De acuerdo con la tcnica de asignacin de asociacin de por conjuntos, la MMU interpreta la direccin emitida por el procesador dividindola en tres campos como se muestra en la Figura 5. La longitud, en bits, de cada uno de los campos de la figura 5 est dada por: 1. Campo palabra= log2 B, donde B es el tamao del bloque en cantidad de palabras 2. campo conjunto = log2 S, donde S es el nmero de conjuntos en cache. 3. Campo etiqueta = log2 (M/S), donde M es el tamao en bloques de la memoria principal. S = N /Bs, donde N es el nmero de bloques de cache y Bs es el nmero de bloques por conjunto 4. el nmero de bits de la direccin en la memoria principal = log2 (B x M) Cabe sealar que el nmero total de bits que es computado por las tres primeras ecuaciones se debe aadir a la longitud de la direccin de memoria principal. Esto se puede utilizar como un control para la correccin de su clculo. Ejemplo 4 Calcule los tres parmetros anteriores (palabra, conjunto, y la etiqueta) para un sistema de memoria que tiene las siguientes especificaciones: tamao de la memoria principal es de 4K bloques, el tamao de la cach es de 128 bloques, y el tamao del bloque es de 16 palabras. Supongamos que el sistema utiliza la asignacin asociativa por conjuntos con cuatro bloques por conjunto. Jerarqua de Memoria Pgina 13

S = 128/4 = 32 conjuntos 1. campo palabra = log2 B = log2 16 = log2 24 = 4 bits 2. campo conjunto = log2 32 = 5 bits 3. campo etiqueta = log2 (4 x 210/32) = 7 bits El nmero de bits en la direccin de la memoria principal = log2 (B x M) = log2 (24 x 212) = 16 bits. Despus de haber mostrado la divisin de la direccin de memoria principal, ahora podemos proceder a explicar el protocolo utilizado por la MMU para satisfacer una peticin hecha por el procesador para acceder a un elemento determinado. Presentamos el protocolo utilizando los parmetros indicados en el ejemplo presentado ms arriba. Los pasos del protocolo son: 1. Utilice el campo de conjunto (5 bits) para determinar (de forma directa) el conjunto especificado (1 de los 32 conjuntos).

Figura 5. Campo de direcciones de mapeo asociativo por conjuntos 2. Utiliza el campo Etiqueta para encontrar una coincidencia con cualquiera de los bloques (cuatro) en el conjunto determinado. Una coincidencia en la etiqueta de la memoria indica que el conjunto especificado determinado en el paso 1 contiene el bloque objetivo, es decir, que hay acierto de cach. 3. Entre las 16 palabras (elementos) contenidas en el bloque de cach con acierto, la palabra solicitada se selecciona usando un selector con la ayuda del campo Palabra. 4. Si en el paso 2, no se encuentran coincidencias, entonces esto indica un error de cach. Por lo tanto, el bloque requerido tiene que ser trado desde la memoria principal, depositado en el conjunto especificado al principio, y el elemento objetivo (palabra) se pone a disposicin del procesador. La etiqueta de la memoria cach y los bloques de la memoria cach tienen que actualizarse en consecuencia.

Jerarqua de Memoria

Pgina 14