2010-12-03 5 views
0

Supposons que j'écris à un emplacement RAM sur un système Core Duo via le cache L1/L2. Supposons que je vais écrire dans un emplacement persistant dans la RAM et paniquer le noyau Linux peu de temps après. L'emplacement est persistant, ce qui signifie qu'il ne sera pas ré-initié lors du redémarrage du processeur et sera repris après le redémarrage.Vider le cache Core Duo avant le redémarrage?

Est-ce que Linux va vider le cache CPU dans le cadre du redémarrage/panique?

La CPU va-t-elle vider la mémoire cache avant de redémarrer?

Ou devrais-je le faire manuellement? Comment?

Mise à jour: mon cache n'est pas accessible en écriture.

La question est, est-ce que la spécification CPU définit ce comportement?

Répondre

0

La mémoire cache ne peut pas être vidée car un diagnostic système ou un débogueur doit être exécuté par un utilisateur, un ingénieur système ou une personne de support informatique pour diagnostiquer et vider l'état de l'ordinateur. Le cache peut être vidé au démarrage ou non et cela dépend du type et de la version du système d'exploitation, du langage de programmation et de l'application utilisés lors de l'événement. Il peut s'agir d'une option sélectionnable (à partir de n'importe quel BIOS) au démarrage, mais elle sera probablement initialisée à poweron mais pas nécessairement à chaud si elle est disponible.

+0

pas sûr de comprendre comment entrent en jeu app/langue, ou des outils de diagnostic .. On parle de mémoire cache, fichier cache pas, non? –

1

Probablement la manière la plus appropriée de le faire serait de marquer la page contenant les emplacements persistants comme non-cacheable. De cette façon, l'écriture dans le ou les emplacements persistants contournerait toujours le cache (écriture directe). Bien sûr, il se peut que votre cache soit écrit de toute façon, donc cela peut être redondant - vous devriez d'abord le vérifier.

+0

oui, mais cela affecte les performances –

+0

@ n-alexander: seulement pour cette page - vous n'avez sûrement pas de données persistantes qui sont aussi critiques pour la performance? –

+0

malheureusement, c'est exactement ce que j'ai –

0

Je suppose que cela pourrait être utile :) http://lxr.linux.no/#linux+v2.6.30/arch/x86/kernel/reboot.c

+0

merci, c'est intéressant, mais cela couvre Linux redémarré contrôlé. Ce qui fait partie de mon problème. Une autre partie est redémarrage HW-initié –

+0

à partir de la source abose, vous pouvez voir que différentes méthodes de redémarrage pourraient être utilisés. Certains vont réinitialiser le CPU sur un bas niveau, d'autres non. Donc, ma réponse à votre question serait "ça dépend" :) – Quamis

+0

Personnellement, je m'attendrais aussi à ce que le BIOS vider le cache pendant le redémarrage, donc le système commencerait toujours dans le même état prévisible ... – Quamis

Questions connexes