Manutenzione della cache
Le operazioni esplicite che il firmware deve eseguire affinché la cache e il controller DMA concordino su cosa contiene la memoria.
In un microcontrollore privo di cache, il DMA scrive direttamente nella RAM e la CPU legge da lì. Il Cortex-M7, che nel 2014 ha portato una cache dati nel mondo dei microcontrollori, ha posto fine a tutto questo: il controller DMA aggira la cache e nessun hardware tiene le due viste allineate. Prima di trasmettere, il buffer va ripulito (clean) in modo che le linee modificate raggiungano la RAM. Dopo la ricezione va invalidato perché la CPU smetta di leggere copie obsolete.
Il trabocchetto è la dimensione della linea, 32 byte. Un buffer che non inizia e non finisce su un confine di linea condivide linee con altre variabili, e invalidarlo scarta in silenzio anche le loro scritture più recenti. L'alternativa pigra — far marcare dalla MPU la memoria DMA come non cacheable — si paga in throughput anziché in ore di debug, e spesso è il compromesso migliore.