Articulo de referencia

Espionaje en autobuses

El espionaje del bus o la detección del bus es un esquema mediante el cual un controlador de coherencia (espía) en una caché (una caché espía ) supervisa o espía las transaccion...

El espionaje del bus o la detección del bus es un esquema mediante el cual un controlador de coherencia (espía) en una caché (una caché espía ) supervisa o espía las transacciones del bus, y su objetivo es mantener la coherencia de la caché en sistemas de memoria compartida distribuida . Este esquema fue introducido por Ravishankar y Goodman en 1983, bajo el nombre de coherencia de caché de "escritura única". [ 1 ] Una caché que contiene un controlador de coherencia (espía) se denomina caché espía.

Cómo funciona

Cuando varios cachés comparten datos específicos y un procesador modifica el valor de dichos datos, el cambio debe propagarse a todos los demás cachés que tengan una copia de los datos. Esta propagación del cambio evita que el sistema viole la coherencia de caché . La notificación del cambio de datos se puede realizar mediante el monitoreo del bus. Todos los monitores supervisan cada transacción en un bus. Si aparece una transacción que modifica un bloque de caché compartido en un bus, todos los monitores comprueban si sus cachés tienen la misma copia del bloque compartido. Si una caché tiene una copia del bloque compartido, el monitor correspondiente realiza una acción para garantizar la coherencia de caché. La acción puede ser un vaciado o una invalidación del bloque de caché. También implica un cambio en el estado del bloque de caché, dependiendo del protocolo de coherencia de caché. [ 2 ]

Tipos de protocolos de espionaje

Existen dos tipos de protocolos de espionaje, dependiendo de la forma de gestionar una copia local de una operación de escritura:

Invalidar escritura

Cuando un procesador escribe en un bloque de caché compartido, todas las copias compartidas en las demás cachés se invalidan mediante el espionaje del bus. [ 3 ] Este método garantiza que solo una copia de un dato pueda ser leída y escrita exclusivamente por un procesador. Todas las demás copias en las demás cachés se invalidan. Este es el protocolo de espionaje más utilizado. Los protocolos MSI , MESI , MOSI , MOESI y MESIF pertenecen a esta categoría.

Escribir actualización

Cuando un procesador escribe en un bloque de caché compartido, todas las copias compartidas de las demás cachés se actualizan mediante la técnica de espionaje del bus. Este método difunde los datos de escritura a todas las cachés a través del bus. Genera un mayor tráfico en el bus que el protocolo de invalidación de escritura. Por ello, este método es poco común. Los protocolos Dragon y Firefly pertenecen a esta categoría. [ 4 ] [ 5 ]

Implementación

Una de las posibles implementaciones es la siguiente:

La caché tendría tres bits adicionales :

  • V válido 
  • D bit sucio , significa que los datos en la caché no son los mismos que en la memoria. 
  • S compartido 

Cada línea de caché se encuentra en uno de los siguientes estados: "modificada" (actualizada por el procesador local), "válida", "inválida" o "compartida". Una línea de caché contiene un valor que puede leerse o escribirse. Escribir en una línea de caché modifica su valor. Cada valor se encuentra en la memoria principal (de acceso muy lento) o en una o más cachés locales (de acceso rápido). Cuando un bloque se carga por primera vez en la caché, se marca como "válido".

En caso de fallo de lectura en la caché local, la solicitud de lectura se transmite por el bus. Todos los controladores de caché supervisan el bus. Si uno de ellos ha almacenado en caché esa dirección y se encuentra en estado "sucio", cambia su estado a "válido" y envía la copia al nodo solicitante. El estado "válido" indica que la línea de caché está vigente. En caso de fallo de escritura local (se intenta escribir ese valor, pero no se encuentra en la caché), la monitorización del bus garantiza que cualquier copia en otras cachés se establezca en "inválido". "Inválido" significa que una copia existía en la caché, pero ya no está vigente.

Por ejemplo, un estado inicial podría verse así:

Etiqueta | ID | V | D | S --------------------- 1111 | 00 | 1 | 0 | 0 0000 | 01 | 0 | 0 | 0 0000 | 10 | 1 | 0 | 1 0000 | 11 | 0 | 0 | 0

Después de escribir en la dirección 1111 00, cambiaría a esto:

Etiqueta | ID | V | D | S --------------------- 1111 | 00 | 1 | 1 | 0 0000 | 01 | 0 | 0 | 0 0000 | 10 | 1 | 0 | 1 0000 | 11 | 0 | 0 | 0

La lógica de almacenamiento en caché supervisa el bus y detecta si se solicita alguna memoria en caché. Si la caché está modificada y compartida, y hay una solicitud en el bus para esa memoria, un elemento de inspección de datos modificados proporcionará los datos al solicitante. En ese momento, el solicitante puede asumir la responsabilidad de los datos (marcándolos como modificados) o la memoria puede obtener una copia (se dice que la memoria ha "capturado" los datos) y ambos elementos pasan al estado compartido. [ 6 ]

Cuando se invalida una dirección marcada como sucia (es decir, una caché tiene una dirección sucia y la otra está escribiendo), la caché ignorará esa solicitud. La nueva caché se marcará como sucia, válida y exclusiva, y esa caché asumirá la responsabilidad de la dirección. [ 1 ]

Beneficio

La ventaja de usar el rastreo de bus es que es más rápido que el mecanismo de coherencia basado en directorios . Los datos que se comparten se colocan en un directorio común que mantiene la coherencia entre las cachés en un sistema basado en directorios. El rastreo de bus suele ser más rápido si hay suficiente ancho de banda , porque todas las transacciones son una solicitud/respuesta que ven todos los procesadores. [ 2 ]

Inconveniente

La desventaja del espionaje del bus es la escalabilidad limitada . El espionaje frecuente en una caché provoca una carrera con un acceso desde un procesador, por lo que puede aumentar el tiempo de acceso a la caché y el consumo de energía. Cada una de las solicitudes debe transmitirse a todos los nodos de un sistema. Esto significa que el tamaño del bus (físico o lógico) y el ancho de banda que proporciona deben aumentar, a medida que el sistema se hace más grande. [ 2 ] Dado que el espionaje del bus no escala bien, los sistemas NUMA coherentes con caché (ccNUMA) más grandes tienden a utilizar protocolos de coherencia basados ​​en directorios .

Filtro de espionaje

Cuando se produce una transacción de bus en un bloque de caché específico, todos los snoopers deben monitorizar dicha transacción. A continuación, los snoopers consultan su etiqueta de caché correspondiente para comprobar si tiene el mismo bloque. En la mayoría de los casos, las cachés no tienen el bloque, ya que un programa paralelo bien optimizado no comparte muchos datos entre hilos. Por lo tanto, la consulta de la etiqueta de caché por parte del snooper suele ser innecesaria para la caché que no tiene el bloque. Sin embargo, esta consulta interrumpe el acceso a la caché por parte del procesador y genera un consumo de energía adicional.

Una forma de reducir el espionaje innecesario es usar un filtro de espionaje. Un filtro de espionaje determina si un espía necesita verificar su etiqueta de caché o no. Un filtro de espionaje es una estructura basada en directorios y monitorea todo el tráfico coherente para realizar un seguimiento de los estados de coherencia de los bloques de caché. Esto significa que el filtro de espionaje conoce las cachés que tienen una copia de un bloque de caché. Por lo tanto, puede evitar que las cachés que no tienen una copia de un bloque de caché realicen espionaje innecesario. Hay tres tipos de filtros según su ubicación. Uno es un filtro de origen que se encuentra en el lado de la caché y realiza el filtrado antes de que el tráfico de coherencia llegue al bus compartido. Otro es un filtro de destino que se encuentra en las cachés receptoras y evita búsquedas innecesarias de etiquetas de caché en el núcleo receptor, pero este tipo de filtrado no evita el mensaje de coherencia inicial de la fuente. Por último, los filtros en la red podan el tráfico de coherencia dinámicamente dentro del bus compartido. [ 7 ] El filtro de espionaje también se clasifica como inclusivo y exclusivo. El filtro de espionaje inclusivo realiza un seguimiento de la presencia de bloques de caché en las cachés. Sin embargo, el filtro de espionaje exclusivo supervisa la ausencia de bloques de caché en las cachés. En otras palabras, un acierto en el filtro de espionaje inclusivo significa que el bloque de caché correspondiente está en las cachés. Por otro lado, un acierto en el filtro de espionaje exclusivo significa que ninguna caché tiene el bloque de caché solicitado. [ 8 ]

Referencias

  1. 1 2 Ravishankar, Chinya; Goodman, James (28 de febrero de 1983). Implementación de caché para múltiples microprocesadores (PDF) . págs. 346–350 . 
  2. 1 2 3 Yan Solihin (2016). Fundamentos de la arquitectura de computadoras paralelas . págs. 239–246 . 
  3. Eggers, SJ; Katz, RH (1989). "Evaluación del rendimiento de cuatro protocolos de coherencia de caché de espionaje" . Actas del 16.º simposio internacional anual sobre arquitectura de computadoras - ISCA '89 . ACM Press. págs. 2–15 . doi : 10.1145/74925.74927 . ISBN  978-0-89791-319-5.
  4. Hennessy, John L; Patterson, David A. (2011). Arquitectura de computadoras: un enfoque cuantitativo . Elsevier. ISBN 978-0123838728.
  5. Patterson, David A.; Hennessy, John L. (1990). Arquitectura de computadoras: Un enfoque cuantitativo . Morgan Kaufmann Publishers. págs. 469–471 . ISBN  1-55860-069-8.
  6. Siratt, Adrem. "¿Qué es la coherencia de caché?" . EasyTechJunkie . Consultado el 1 de diciembre de 2021 .
  7. Agarwal, N.; Peh, L.; Jha, NK (diciembre de 2009). "Filtrado de coherencia en red" . Actas del 42.º Simposio Internacional Anual IEEE/ACM sobre Microarquitectura . págs. 232–243 . doi : 10.1145/1669112.1669143 . hdl : 1721.1/58870 . ISBN  9781605587981. S2CID 6626465 . 
  8. Ulfsnes, Rasmus (junio de 2013). Diseño de un filtro Snoop para protocolos de coherencia de caché basados ​​en Snoop . Universidad Noruega de Ciencia y Tecnología.{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace )
  • Jim Plusquellic. Arquitecturas de memoria compartida centralizada .
  • Filtro de espionaje .
  • Controlador de caché
  • http://www.icsa.inf.ed.ac.uk/research/groups/hase/models/coherence/index.html
  • http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/0650/bks/SGI_Developer/books/T_IRIX_Prog/sgi_html/ch01.html