Bonsoir à tous,
Je souhaiterais mieux comprendre comment ça se passe lorsque l'on utilise des DMAs au niveau des caches du CPU. (Pas par plaisir, juste parce que je suis obligé pour mon boulot).
Je sais que l'utilisation de DMAs pour faire des opérations mémoires sans le CPU est très fréquent. Cela pose des problèmes pour la cohérence des caches sur le processeur central par contre, donc il faut au moins pouvoir invalider des lignes de cache lors de la réception de la notification de fin d'opération, ou alors il faut que ça soit "automatiquement" fait par le processeur.
On m'a dit que pour les processeurs x86, il n'y a pas d'instruction pour refetcher une ligne de cache depuis la mémoire centrale, ou pour la retirer sans write-back. On m'a dit que sur x86, le processeur surveille les bus pour vérifier qu'il n'y a pas de mouvement mémoire fait par un DMA qui invaliderait les contenus des caches.
Beaucoup de "on m'a dit" comme vous pouvez le voir... Et ceux-ci me laissent perplexes: surveiller le bus me paraît cher en transistor et je vois mal ça implémenté en réalité...
Je demande donc votre aide et vos lumières éclairées!
Merci pour toute aide,
Khazna
Partager