Coherencia de cachés en la arquitectura de computadores

Documento de Universidad Europea sobre la coherencia de cachés en la arquitectura de computadores. El Pdf, óptimo para estudiantes universitarios de Informática, aborda la migración y replicación de datos, así como protocolos de snooping y basados en directorios, con ejemplos y tablas.

Ver más

18 páginas

Estructura de
computadores
Tema 17. Coherencia de cachés
Estructura de computadores
Tema 17. Coherencia de cachés
2
© Copyright Universidad Europea. Todos los derechos reservados.
Índice
Objetivos de aprendizaje ............................................................... 3
1. Presentación ........................................................................... 3
2. Acceso a memoria caché en escritura ............................................. 4
3. Multiprocesadores o multinúcleos .................................................. 5
4. Jerarquía de caché ................................................................... 7
5. Esquemas básicos de coherencia de caché ........................................ 8
6. Protocolo snooping (o fisgoneo) .................................................... 9
7. Protocolo snooping write through ................................................ 10
8. Snooping para write back .......................................................... 12
9. Coherencia basada en directorios ................................................ 13
10. Modelos de directorios ............................................................ 14
11. Resumen ............................................................................ 16
Referencias bibliográficas ............................................................. 17

Visualiza gratis el PDF completo

Regístrate para acceder al documento completo y transformarlo con la IA.

Vista previa

Estructura de computadores

Tema 17. Coherencia de cachés

Índice

  • Objetivos de aprendizaje
  • 1. Presentación
  • 2. Acceso a memoria caché en escritura
  • 3. Multiprocesadores o multinúcleos
  • 4. Jerarquía de caché
  • 5. Esquemas básicos de coherencia de caché.
  • 6. Protocolo snooping (o fisgoneo)
  • 7. Protocolo snooping write through
  • 8. Snooping para write back
  • 9. Coherencia basada en directorios
  • 10. Modelos de directorios
  • 11. Resumen
  • Referencias bibliográficas

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 2

Estructura de computadores

Tema 17. Coherencia de cachés

Objetivos de aprendizaje

Los objetivos que se pretenden alcanzar en este recurso son los siguientes:

  • Analizar los problemas de ordenadores multiprocesador y el problema de la memoria caché.
  • Conocer los diferentes métodos que permiten asegurar la coherencia de caché en sistemas de memoria compartida.
  • Diferenciar los protocolos snooping y los grupos de protocolos basados en directorios.

1. Presentación

501 CD L CD38 IC RSS CO

En este recurso veremos cómo solucionar el problema de la coherencia de caché cuando hay múltiples procesadores, tanto en sistemas mono procesador con varios núcleos de procesamiento, como en sistemas con varios procesadores distribuidos. Analizaremos cuáles son los problemas de la jerarquía de caché en sistemas multiprocesadores y cuáles son los métodos para evitar errores de caché, que se clasifican en:

  • Protocolo snooping (también llamado protocolo snoopy o fisgoneo, en español):
    • Snooping para write through.
    • Snooping para write back.
  • Coherencia basada en directorios:
    • Directorios full-map.
    • Directorios limitados.
    • Directorios encadenados.

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 3

Estructura de computadores

Tema 17. Coherencia de cachés

2. Acceso a memoria caché en escritura

Ya hemos visto que la caché contiene una copia de algunos datos contenidos en la memoria. Nunca datos propios. Un acierto de caché se considera cuando el procesador intenta acceder a un dato, dato que siempre está en memoria, pero que a veces este dato está replicado en memoria caché.

Y aquí es donde está la ventaja de la caché, si este dato se encuentra en caché, es la caché la que responde al procesador simulando que ya se ha producido el acceso al dato en memoria, con una gran ventaja, el tiempo de espera que el procesador ha tenido que emplear para recibir el dato solicitado es muy inferior al tiempo que emplearía si el dato no se encontrara en caché.

Incoherencia de caché

Si los accesos son de tipo lectura, todo es perfecto, pero, ¿qué pasa cuando un acceso a un dato es de tipo escritura y la caché tiene una réplica del mismo? El acceso otra vez más se para en la caché, por lo que la memoria nunca se entera de que ha habido una modificación del dato. Consecuencia, el dato almacenado en caché y el dato almacenado en memoria no son los mismos. Esto se conoce como incoherencia de caché.

La incoherencia de caché tiene dos posibles soluciones en función de la política de escritura que empleemos:

  • Escritura inmediata: write through. Los accesos a caché en escritura siempre producen fallo de caché, por lo que la petición de escritura siempre llega a la memoria principal. No se puede dar problemas de caché, porque en ningún momento el dato en memoria se queda desactualizado. La operación de escritura se realiza siempre en la memoria principal y en la memoria caché.
  • Escritura retardada: write back. Cuando hay un acceso de escritura y el dato se encuentra en la caché, solamente se actualiza el dato en la memoria caché. Tanto la memoria caché como la memoria principal mantienen información interna de qué datos han sido actualizados por una escritura en caché, y estos datos antes de ser eliminados de caché, son escritos en memoria. Los datos permanecen desactualizados solo mientras hay una copia de los mismos en caché, pero nunca se pierdan datos, porque la caché es responsable de actualizar la memoria antes de eliminar los datos actualizados.

Ambos métodos funcionan bien, pero, como siempre, no son perfectos.

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 4

Escritura inmediata y retardada

La escritura inmediata es segura, pero poco eficiente, la escritura retardada, por el contrario, penaliza más los fallos de caché.

Poco eficiente

Todos los accesos a memoria en escritura provocan fallo de caché, lo que reduce a la mitad el índice de aciertos por parte de la caché. Hay técnicas que mejoran este problema, dejando la responsabilidad a la cache de actualizar el dato en memoria y que el procesador continue con la ejecución de código antes de que la memoria se actualice por completo. El inconveniente es que carga de trabajo a la caché, haciéndola sustancialmente más lenta.

Penaliza más los fallos de caché

Si hay un fallo de caché y hay que reemplazar un bloque de datos de la misma cuando el bloque tiene activada la señal de bloque modificado, antes de proceder al reemplazo, hay que escribir el bloque en memoria y después proceder a la carga del nuevo bloque. Esto añade retrasos en la caché, cada vez que hay que reemplazar un bloque que esta modificado. Al igual que en el caso anterior, hay técnicas que mejoran este comportamiento. Una de ellas es hacer que la caché, en sus momentos ociosos y de manera autónoma, revise qué bloques se han modificado y vaya actualizando la memoria, para que si hay reemplazo sobre ellos, ya se haya realizado la mitad del trabajo.

3. Multiprocesadores o multinúcleos

En la actualidad, la mayoría de las computadoras que se comercializan incluyen un sistema multiprocesador o multinúcleo. A la hora de diseñar estos sistemas hay que pensar cómo se organiza la jerarquía de memoria. Es especialmente crítico el uso de las memorias cachés y el establecimiento de las políticas de ubicación y escritura más óptimas.

Diferenciemos multiprocesadores y multinúcleos:

  • Multiprocesador. Máquina con dos o más procesadores completos. Normalmente podemos hablar de una sola maquina con más de un procesador o incluso en dos máquinas diferentes.
  • Multinúcleo. Procesador con dos o más núcleos en un solo chip. Una máquina que tiene un solo procesador instalado. Este procesador internamente está construido por más de un núcleo funcional.

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 5

Estructura de computadores

Tema 17. Coherencia de cachés

En ambas maquinas, la jerarquía de memoria es muy diferente, pero ambas tienen un problema, aunque sea a niveles diferentes.

  • ¿ Qué pasa con un dato que se necesite en más de un procesador? Una variable compartida por más de un procesador está replicada en los sistemas de memoria caché de cada procesador. Esto permite agilizar los accesos a esa variable y explotar al máximo la existencia de la caché. La variable compartida está replicada en la memoria común a todos los procesadores, por tanto, no es un dato local.

Además, está replicada en cada una de las memorias locales ya que el acceso a los datos debe ser lo más rápido posible, consiguiendo reducir latencia (tiempo de lectura) en los accesos.

  • ¿ Qué pasa si el acceso a esta variable no es solo en lectura? Tras una serie de accesos al dato en escritura, las tres copias de la variable tendrán datos diferentes. ¿ Por qué? Porque no es suficiente con que cada procesador se encargue de mantener correcto el valor de la variable en la memoria compartida cada vez que se actualiza, sino que es necesario que esta compruebe si su valor es correcto antes de acceder a él en lectura.

Máquina con dos procesadores

Supongamos una máquina con dos procesadores. Cada procesador tiene una memoria caché local y una memoria compartida a los dos procesadores para el intercambio de información. Supongamos que ambos procesadores acceden al dato compartido "i" donde guardan información de sincronización sobre la tarea que están ejecutando conjuntamente. Supongamos la secuencia de accesos a la variable "i" tal como sigue:

Tabla 1. Secuencia de accesos a la variable "i".

Paso Procesador Acción Memoria compartida Memoria caché procesador 1 Memoria caché procesador 2 Valor inicial 5 ¿? ¿? 1º P.1 Lee i 5 5 ¿? 2° P.2 Lee i 5 5 5 3º P.1 Incrementa i en 3 8 8 5 4º p.2 Incrementa i en 1 6 8 6

Interpretación: cuando los procesadores en los pasos 1 y 2 leen la variable compartida, todo va bien. En el paso 3, el procesador 1 accede a la variable en escritura, guardando un 8 (5+3), por lo que su copia local almacena un 8 y pospone la actualización de la copia en memoria compartida para futuros accesos. Pero la copia local del procesador 2 no se actualiza. De aquí el problema, cuando esta guarda un 6 en la misma variable después de calcular (5+1), en su copia local queda una 6, en memoria compartida otra

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 6

Valor correcto de la variable "i"

6. Pero, ¿quién tiene el valor correcto de la variable "i"? Nadie. El valor correcto debería ser 9 (5+3+1), valor que no está almacenado en ninguna de las memorias. Este problema ocurre siempre que haya una memoria más rápida enmascarando a una memoria mayor y compartida, pero lenta, y haya datos compartidos entre todos los procesos. Si analizamos la idea que acabamos de ver, significa que cuando hay una memoria caché local y hay datos compartidos, los datos entre ellas pueden no ser coherentes. Por eso se le llama incoherencia de caché. Y esta incoherencia de caché sí es complicada de solucionar (pero no imposible) y solo se da en sistemas multiprocesador o multinúcleo.

4. Jerarquía de caché

Hoy en día el problema de la incoherencia de caché está prácticamente a todos los niveles, ya que son muy pocos lo procesadores que se comercializan que no son multinúcleos. Además, seguro que hemos escuchado hablar de que nuestro sistema tiene cache L1, L2 e incluso L3.

S

Ya hemos hablado de que cada nivel de caché es una caché de la caché anterior. Por lo tanto, estas cachés las podemos incluir como etapas en nuestra jerarquía de memoria o podemos hablar de que la caché está a su vez jerarquizada dentro de la jerarquía de memoria. Es ambos casos, la idea es la misma.

El problema es como se organiza esta cache en los procesadores actuales. Tomemos como ejemplo dos procesadores actuales:

1. Microprocesadores Intel Core i7

Esto es lo que pone Intel (Intel, 2016) en la hoja de características de uno de los microprocesadores Intel Core i7 (Legit Reviews, 2016) con respecto a su caché:

  • Up to 6 execution cores, each core supports two threads (Intel® Hyper- Threading Technology) for up to 12 threads.
  • A 32-KB instruction and 32-KB data first-level cache (L1) for each core.
  • A 256-KB shared instruction/data mid-level (L2) cache for each core.
  • Up to 15 MB last level cache (LLC): up to 2.5 MB per core instruction/data last level cache (LLC), shared among all cores.

Resumiendo: caché L1 dedicada a cada núcleo, además dividida en datos e instrucciones. La L2, caché clásica, una caché local para cada procesador. Y, por último, la caché L3, compartida para los todos los núcleos.

ue Universidad Europea

@ Copyright Universidad Europea. Todos los derechos reservados. 7

¿Non has encontrado lo que buscabas?

Explora otros temas en la Algor library o crea directamente tus materiales con la IA.