Requisito previo: Organización de caché
Introducción:
en este artículo, intentaremos comprender en detalle el acceso simultáneo a la memoria caché, así como el acceso jerárquico a la memoria caché, y también comprenderemos cómo funciona realmente este acceso cada vez que la CPU (unidad central de procesamiento) solicita el bloque de memoria principal que se almacena actualmente en la memoria caché. .
Antes de saltar directamente a los tipos de accesos a caché, primero entendamos la memoria caché de una manera breve, como qué es exactamente la memoria caché y por qué es necesario usar la memoria caché.
Funcionamiento de la memoria caché:
Los siguientes puntos clave (que se ilustran a partir de la representación pictórica anterior) cubrirán brevemente la memoria caché, su importancia y cómo usarla de manera efectiva:
- Si la CPU genera una dirección (que en sí misma es una dirección de memoria principal) y desea realizar algún tipo de operación en el contenido presente en ese contenido en particular, acceder directamente a la memoria principal será un proceso lento.
- La razón por la que lleva mucho tiempo es que la CPU primero verificará su dirección generada en la memoria principal, supongamos que si la CPU encuentra esa dirección en particular en la memoria principal, luego la CPU realizará su operación sobre ese operando (valor que es presente en una dirección de memoria principal particular).
- Todo este proceso tomará una gran cantidad de tiempo, lo que eventualmente hará que la CPU sea un poco lenta y también hará que el programa se dañe o se destruya gravemente.
- Es por eso que necesitamos la memoria caché para que la CPU funcione un poco más rápido al acceder a cualquier tipo de información que la CPU eventualmente recibirá de la memoria caché, donde guardamos los datos más demandados o necesarios que la CPU necesita para acceder.
- En la memoria caché mantendremos todos los bloques que se necesitan para la CPU y así reduciremos el tiempo de acceso a la memoria para acceder a un contenido en particular desde la memoria principal, ya que ahora estamos accediendo a través de la memoria caché.
- Si la CPU intenta acceder al bloque de memoria principal que no se encuentra en la memoria caché, entonces la CPU tendrá que acceder a la memoria principal para realizar más operaciones en un bloque de memoria principal en particular.
Ahora que ha entendido el concepto básico de la memoria caché y cómo funciona cuando la CPU quiere acceder a cualquier dirección de memoria principal, pasemos a nuestro tema principal de consideración, que es el acceso simultáneo a la caché y el acceso jerárquico a la caché.
Tipos de Accesos a Caché: Hay dos tipos de Accesos a Caché posibles siempre que la CPU desee acceder a una dirección de memoria principal en particular: Acceso a Caché Simultáneo y Acceso a Caché Jerárquico. Ambos tienen un tipo similar de representación de bloque, pero su funcionamiento, acceso y, lo que es más importante, su tiempo promedio de acceso a la memoria es diferente, respectivamente.
1. Acceso a caché simultáneo:
- En el acceso simultáneo a la memoria caché, la solicitud de memoria caché y memoria principal se generan simultáneamente.
- Si la dirección generada por la CPU se encuentra en la memoria caché, entonces se considera como hit y luego la CPU podría acceder directamente a la dirección de la memoria principal, así como a su contenido desde la memoria caché y, además, si ocurre algún tipo de cambio en la memoria caché con respecto a ese particular. entonces esos cambios se realizarán en la memoria principal también después de la memoria caché.
- Si la dirección de generación de la CPU no se encuentra en la memoria caché, se considera como perdida y luego la CPU tiene que acceder a esa dirección desde la memoria principal y, además, ese bloque de la memoria principal se mueve a la memoria caché para futuras referencias y uso.
- El acceso simultáneo a la memoria se utiliza para la implementación de Write Through Cache.
Cálculo del tiempo promedio de acceso a la memoria en acceso simultáneo:
si es un acierto, la CPU accederá al contenido de la memoria caché y, si es un error, la memoria principal entrará en acción.
Por lo tanto, el tiempo promedio de acceso a la memoria en caso de acceso simultáneo se mostrará a continuación:
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * Tiempo de acceso a la memoria principal
Si supongamos que la localidad de referencia se incluye aquí, entonces usamos el siguiente concepto para determinar el tiempo promedio de acceso a la memoria:
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * Tiempo requerido para acceder a un bloque de memoria principal.
donde, Tiempo requerido para acceder a un bloque de memoria principal = tamaño del bloque * Tiempo requerido para acceder a la memoria principal.
Si supongamos que el tiempo de transferencia de bloques también se incluye aquí, entonces usamos el siguiente concepto para determinar el tiempo promedio de acceso a la memoria:
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo de acceso a la memoria caché + Tiempo requerido para acceder a un bloque de memoria principal)
donde, Tiempo requerido para acceder a un bloque de memoria principal = tamaño de bloque * Tiempo requerido para acceder a la memoria principal
Aquí, la razón para usar el acceso a la memoria caché en caso de falla junto con el tiempo de acceso al bloque es que necesitamos copiar el bloque en la memoria caché (si se ilustra en algún escenario en particular).
2. Acceso a caché jerárquico:
Aunque la estructura básica del bloque sigue siendo similar a la del acceso jerárquico a la memoria caché, en realidad existen varias diferencias entre los accesos a la memoria jerárquica y simultánea a la memoria caché que se describen a continuación (en puntos):
- En el acceso de caché jerárquico, solo se accede primero a la memoria más rápida (que es la memoria caché).
- Posteriormente, si la dirección generada por la CPU no se encuentra en la memoria caché, junto con el tiempo de búsqueda en la memoria caché, también se contará el tiempo de acceso a la memoria principal.
- De forma predeterminada, muchos diseños de computadora se realizan utilizando este acceso jerárquico solo porque este acceso a la memoria caché reduce el tiempo promedio de acceso a la memoria debido al concepto de localidad de referencia (en el que para una dirección particular de la memoria principal solo traemos su dirección anterior y siguiente también en forma de bloque para que en el futuro se requiera menos acceso a la memoria).
Cálculo del Tiempo Promedio de Acceso a Memoria en Acceso Jerárquico –
Si es un acierto, la CPU accederá al contenido de la memoria caché y, si es un error, también se cuenta junto con el tiempo de acceso a la memoria caché, el tiempo de acceso a la memoria principal.
Por lo tanto, el tiempo promedio de acceso a la memoria en caso de acceso jerárquico se mostrará a continuación:
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo de acceso a la memoria caché + Tiempo de acceso a la memoria principal)
Ejemplo 1: en una jerarquía de 2 niveles, si el nivel superior tiene un tiempo de acceso de 10 ns y el nivel inferior tiene un tiempo de acceso de 60 ns, ¿cuál es la tasa de aciertos en el nivel superior necesaria para dar un tiempo de acceso promedio de 15 ns?
Explicación: Según el ejemplo, se nos ha dado el tiempo de acceso a la memoria caché (nivel superior) = 10 ns y el tiempo de acceso a la memoria principal (nivel inferior) = 60 ns y el tiempo de acceso a la memoria promedio = 15 ns.
Por lo tanto, aplicaremos el concepto ilustrado anteriormente de acceso jerárquico (porque en cuestión se escribió una jerarquía de 2 niveles) para calcular el tiempo de acceso a la memoria que
: Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo de acceso a la memoria caché + Tiempo de acceso a la memoria principal)
15ns = 10 * Relación de aciertos + (1 – Relación de aciertos) * (10ns + 60ns)
15ns-70ns = -60 * Relación de aciertos Relación de aciertos = 55/60
= 11/12 = 0.9 (Respuesta)
Si supongamos que la localidad de referencia se incluye aquí, entonces usamos el siguiente concepto para determinar el tiempo promedio de acceso a la memoria.
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo requerido para acceder a un bloque de memoria principal + Tiempo de acceso a la memoria caché)
donde, Tiempo requerido para acceder a un bloque de memoria principal = tamaño de bloque * Tiempo requerido para acceder a la memoria principal
Ejemplo 2:
en una jerarquía de dos niveles, el nivel superior tiene un tiempo de acceso de 10 ns y el nivel inferior tiene un tiempo de acceso de 50 ns, la tasa de aciertos en el nivel superior es del 90 %. Si el tamaño de bloque de la memoria caché es de 16 bytes, ¿cuál es el tiempo promedio de acceso a la memoria requerido? (Considerar que el sistema utiliza localidad de referencia)
Explicación:
dado el tiempo de acceso a la memoria caché (nivel superior) = 10 ns Tiempo de
acceso a la memoria principal (nivel inferior) = 60 ns
Por lo tanto, aplicaremos el concepto aprendido anteriormente para calcular el tiempo promedio de acceso a la memoria cuando tengamos que considerar la localidad del concepto de referencia.
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * ((Tamaño de bloque * tiempo de acceso a la memoria principal) + tiempo de acceso a la memoria caché)
Tiempo promedio de acceso a memoria = 10 * 0.9 + (1 – 0.9) * (16 * 5 + 10)
= 9 + (0.1) * (800 + 10)
= 9 + 81 = 90ns (Respuesta)
Si supone que el tiempo de transferencia de bloque es también incluido aquí, luego usamos el siguiente concepto para determinar el tiempo promedio de acceso a la memoria.
Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo de acceso a la memoria caché + Tiempo requerido para acceder a un bloque de memoria principal + Tiempo de acceso a la memoria caché)
donde, Tiempo requerido para acceder a una memoria principal bloque = tamaño del bloque * Tiempo requerido para acceder a la memoria principal
Ejemplo 3:
en una jerarquía de dos niveles, la caché tiene un tiempo de acceso de 12 ns y el tiempo de acceso a la memoria principal de 120 ns, la tasa de aciertos de la caché es del 90 %. Si el tamaño de bloque de la memoria caché es de 16 bytes, ¿cuál es el tiempo promedio de acceso a la memoria, incluida la penalización por error? (Penalización por error: tiempo para llevar el bloque de memoria principal a la memoria caché cuando se produce un error de caché)
Explicación:
dado el tiempo de acceso a la memoria caché = 12 ns Tiempo de
acceso a la memoria principal = 120 ns
Por lo tanto, utilizaremos el concepto aprendido anteriormente para calcular el tiempo promedio de acceso a la memoria cuando el bloque la transferencia se produce desde la memoria principal a la memoria caché en caso de falta de caché.
- Tiempo promedio de acceso a la memoria = Proporción de aciertos * Tiempo de acceso a la memoria caché + (1 – Proporción de aciertos) * (Tiempo de acceso a la memoria caché + (Tamaño del bloque * Tiempo de acceso a la memoria principal) + Tiempo de acceso a la memoria caché debido a la transferencia de bloques)
Tiempo medio de acceso a la memoria = 0,9 * 12 = (0,1) * (12 ns + 16 * 120 ns + 12 ns)
= 10,8 ns + 194,4 ns = 205,2 ns (Respuesta)
Publicación traducida automáticamente
Artículo escrito por amansingla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA