DMA y coherencia de cache: análisis de casos Caso cache write-through 9 Lecturas mediante DMA 9 Escrituras mediante DMA Caso cache write-back 9 Lecturas mediante DMA 9 Escrituras mediante DMA Universidad de Oviedo Dpto. de Informática Ingeniería de Computadores Caso cache write-through: lecturas mediante DMA No se generan problemas de coherencia, ya que la M. P. siempre contiene datos actualizados Universidad de Oviedo Dpto. de Informática Ingeniería de Computadores Caso cache write-through: escrituras mediante DMA Problema Si el periférico escribe en un bloque de M. P. que se encuentra cacheado, el correspondiente bloque de la cache se convierte en obsoleto Solución Espionaje de bus (bus snooping): el controlador de cache detecta dicha situación espiando el bus y marca el bloque como inválido Ejemplo Situación Inicial Bloque de cache M. P. Nº de bloque bit de validez 11000000 11000001 11000010 11000011 Un periférico escribe el dato AA en la dirección 11000000 11000011 11000001 Periférico El controlador de cache detecta que la dirección escrita está cacheada, por lo que invalida el bloque de la cache FF B3 19 CD 11000010 11000011 FF B3 19 AA 11000000 11000001 11000010 11000011 FF B3 19 AA Universidad de Oviedo Dpto. de Informática 0 0 1 1 etiqueta 3 2 1 0 110 CD 19 B3 FF etiqueta 3 2 1 0 110 CD 19 B3 FF OFFSETS OFFSETS Incoherencia 0 0 etiqueta 3 2 1 0 xxx XX XX XX XX OFFSETS Invalidar bloque Ingeniería de Computadores Caso cache write-back: lecturas mediante DMA Problema Los datos leídos pueden pertenecer a un bloque de M. P. Obsoleto, es decir, no coherente con el correspondiente bloque de la cache Solución El controlador de cache detecta dicha situación mediante espionaje de Bus. Detiene al periférico, actualiza el bloque accedido en la M. P. y da permiso al periférico para que comience de nuevo la lectura Ejemplo Situación Inicial: Bloque de cache “sucio”, incoherente con la M. P. Bloque de cache M. P. Nº de bloque bit de validez bit “derty” 11000000 11000001 11000010 11000011 FF B3 19 CD 0 1 1 etiqueta 3 2 1 0 110 77 19 11 FF OFFSETS Datos incoherentes Un periférico solicita lectura de la dirección 11000011. El controlador de cache detecta mediante espionaje de bus que esta dirección pertenece a un bloque “sucio” y detiene al periférico Solicita lectura Se deniega Periférico 11000000 11000011 FF B3 19 CD 0 1 1 etiqueta 3 2 1 0 110 77 19 11 FF OFFSETS El controlador de cache actualiza el bloque de memoria principal, después la lectura puede llevarse a cabo Actualización Lectura del dato Periférico 11000000 11000011 FF 11 19 77 Universidad de Oviedo Dpto. de Informática 0 1 0 etiqueta 3 2 1 0 110 77 19 11 FF OFFSETS Ingeniería de Computadores