[DMA] Cómo garantizar la coherencia de DMA y caché

Por un lado , cuando la CPU quiere leer datos del caché, primero verificará si el caché llega, si llega, regresará directamente y ya no se accederá a la memoria. Por otro lado, DMA es escribir datos en la memoria. Como resultado, el contenido transferido por DMA es inconsistente con el contenido almacenado en caché.

 

DMA escribe datos en la memoria

Cuando la CPU recibe una solicitud de escritura de DMA, significa que están llegando nuevos datos. Para garantizar la coherencia, la CPU primero debe borrar el caché.

  •  Primero realice una operación limpia en el caché (verifique el bit sucio, si es verdadero, escríbalo nuevamente en el siguiente nivel de almacenamiento)
  • Luego realice la operación no válida para invalidar los datos en el caché. La próxima vez que acceda al caché, accederá directamente a la memoria.

Cuando hay datos nuevos en la memoria, debido a la estrategia de almacenamiento en búfer, por un lado, los datos se devolverán a la CPU y, por otro lado, se guardará una copia de los datos nuevos en el caché.

 

DMA lee datos de la memoria

Cuando la CPU recibe una solicitud de lectura del DMA, significa que el DMA está a punto de escribir datos en el periférico. En este momento, la CPU necesita vaciar el caché y vaciar los datos en la memoria. En este momento, ¿qué Las lecturas de DMA son los datos más recientes.

 

Artículo de referencia:

Cómo mantener la coherencia de la caché DMA (bajo modificación)_Blog-CSDN de Xingkongyu

Las funciones de no válido, limpieza y vaciado en la memoria CACHE_cache Flush_blog-CSDN de Qiu Hui

Supongo que te gusta

Origin blog.csdn.net/challenglistic/article/details/132168679
Recomendado
Clasificación