160 likes | 547 Views
“Sistemas operativos” 6.3 Mecanismos para mantener la coherencia en caché. COHERENCIA DE CACHE Es cuando existen varias copias del mismo dato simultáneamente en caches diferentes, por lo tanto si los procesadores actualizan sus copias puede producirse inconsistencia de memoria.
E N D
“Sistemas operativos”6.3 Mecanismos para mantener lacoherencia en caché
COHERENCIA DE CACHE Es cuando existen varias copias del mismo dato simultáneamente en caches diferentes, por lo tanto si los procesadores actualizan sus copias puede producirse inconsistencia de memoria. Cuando un procesador cambia (escribe) un dato en su propia cache local, el cambio debe hacerse en todas las caches que tienen copia. Alternativamente, las otras copias se deben invalidar. Es decir, los datos compartidos deben ser coherentes en todas las caches del sistema.
MODELOS DE COHERENCIA DE CACHE • El objetivo principal de los protocolos es situar las variables locales utilizadas recientemente en la cache apropiada y mantenerlos allí para las distintas escrituras y lecturas, al mismo tiempo que se mantiene la consistencia de las variables compartidas que pudieron encontrarse en varias caches al mismo tiempo. • Las aproximaciones de coherencia de cache se han dividido en aproximaciones de software y hardware. • Softwareintentan evitar la necesidad de circuitería y lógica de hardware adicional dejando que el compilador y el sistema operativo se encarguen del problema. Esto lo que quiere decir es que el compilador realiza un análisis del código para determinar qué datos pueden dar problemas al pasar a cache, y los marcan en consecuencia. Después el sistema operativo o el hardware impiden que se pasen a cache los datos marcados como no almacenables en cache. • - Hardware:estos se denominan protocolos de coherencia de cache. Y permiten reconocer dinámicamente en el momento de la ejecución las situaciones de inconsistencia por lo tanto, existe un uso más efectivo de las caches y reduce la complejidad en el desarrollo del software.
Este se divide en • Protocolos de directorio: recogen y mantienen la información acerca de donde residen las copias • de las líneas. Usualmente hay un controlador centralizado que es parte del controlador de memoria • principal, y un directorio que se almacena en la memoria principal. El directorio contiene información • de estado global de las caches locales El controlador centralizado comprueba y emite las órdenes • precisas para la transferencia entre memoria y cache o entre distintas caches. Además es responsable • de mantener actualizada la información. • Protocolos de sondeo: distribuyen la responsabilidad de mantener la coherencia de cache entre todos • los controladores de cache del multiprocesador. Una cache debe de reconocer cuando una línea de las • que contiene esta compartida con otras caches. Cuando se realiza una actualización en una línea de cache • compartida, debe anunciarse a todas las otras caches mediante un mecanismo de difusión. Cada controlador • de cache es capaz de espiar su red para observar las notificaciones que se difunden y reaccionar adecuadamente.
El protocolo más habitual para mantener la coherencia es el protocolo por fisgoneo (snooping).La figura muestra como acceden las caches a la memoria principal con un único bus. Todos los controladores de las caches monitorizan el bus para determinar si tienen o no una copia del bloque compartido.
Este protocolo obtuvo gran difusión en las máquinas de los años 80´s que usaban un bus común para acceder a la memoria, estos uniprocesadores crecían añadiendo procesadores al mismo bus dentro de un esquema de memoria compartida. Las caches se crearon para aumentar el rendimiento de cada procesador, lo que implicó la realización de esquemas para mantener las caches al día fisgoneando la información del bus común. Hay dos tipos de protocolos por fisgoneo: 1.-INVALIDACION POR ESCRITURA: El procesador que realiza la escritura causa la invalidación de las copias en las otras caches antes de realizar la escritura y después es libre de actualizar los datos locales hasta que otro procesador los necesite, el procesador que escribe manda una señal de invalidación al bus y todas las caches comprueban si tienen una copia, si es así estas invalidan el bloque que contiene la palabra. Este esquema permite múltiples lectores pero un solo escritor. 2.-ACTUALIZACION POR ESCRITURA: En lugar de invalidar cada bloque que esta compartido, el procesador escritor transmite los nuevos datos a todos los procesadores, es decir todas las copias se actualizan con el nuevo valor. Este esquema también se llama escritura difundida (writebroadcast), transmite continuamente las escrituras de los datos compartidos mientras que la invalidación borra todas las otras copias para que haya solo una copia local valida.
PROTOCOLO MESI (ILLINOIS) • Cada línea de caché se marca con uno de los cuatro estados siguientes: • M - Modified (Modificado): La línea de caché sólo está en la caché actual, y está "sucia"; ha sido modificado el valor de la memoria principal. Es necesario que los datos sean escritos otra vez en la memoria principal antes de permitir cualquier otra lectura del estado de la memoria (ya no es válida). • E - Exclusive (Exclusivo): La línea de caché sólo se encuentra en la caché actual, pero está "limpia"; coincide con el valor de la memoria principal. • S - Shared (Compartido): Indica que esta línea de caché puede estar duplicada en otras cachés. • I - Invalid (Inválido): Indica que esta línea de caché no es válida.
PROTOCOLO MSI • Funciona en sistemas multiprocesador. Las letras del nombre del protocolo identifican los posibles estados en los que una línea de caché puede ser. Así: • Modified : El bloque se ha modificado en la memoria caché . Los datos en la memoria caché es entonces incompatible con el almacén de respaldo (por ejemplo, la memoria ). Una memoria caché con un bloque en el estado "M" tiene la responsabilidad de escribir el bloque para el almacén de respaldo cuando es desalojado. • Shared : Este bloque es modificado y existe en al menos un caché. La caché puede desalojar a los datos sin tener que escribir en el almacén de respaldo. • I nvalid: Este bloque no es válido y se deben recoger en la memoria o en otro caché si el bloque se va a almacenar en caché.
PROTOCOLO MOSI (BERKELEY) Agrega la O WNED estado, que indica que el procesador actual es propietario de este bloque, y dará servicio a las peticiones de otros procesadores para el bloque.
PROTOCOLO MOESI Evita la necesidad de escribir una línea de caché con datos de nuevo a la memoria principal cuando otro procesador intenta leerlo. En lugar de ello, el Estado Propiedad permite un procesador para suministrar los datos modificados directamente al otro procesador. Esto es beneficioso cuando la latencia y ancho de banda de comunicación entre dos CPUs es significativamente mejor que a la memoria principal. Un ejemplo sería CPUs multi-core con caché L2 por núcleo.
PROTOCOLO MESIF El M, E, S y estados I son las mismas que en el protocolo MESI. El estado F es una forma especializada de estado S, e indica que una caché debería actuar como un respondedor designado para todas las solicitudes de la línea dada. El protocolo garantiza que, si alguno de caché tiene una línea en el estado S, como máximo una (otra) caché mantiene en el estado F.