Ist es möglich, den L1- und / oder L2-Cache unter Ubuntu 14.04 zu deaktivieren (vorzugsweise in einer höheren Sprache wie Python)? Wenn das so ist, wie?
Unterscheidet sich das Deaktivieren des Caches außerdem erheblich zwischen verschiedenen Architekturen? Wenn ja, bin ich mehr an einem ARM Cortex-A15 interessiert.
BEARBEITEN
Bei der Untersuchung, wie der Cache deaktiviert werden kann, habe ich in der Dokumentation zu kernel.org Informationen zur Datei "drop_caches" in / proc / sys / vm / gefunden
"Wenn Sie darauf schreiben, löscht der Kernel saubere Caches sowie wiedergewinnbare Plattenobjekte wie Dentries und Inodes. Sobald sie gelöscht werden, wird ihr Speicher frei."
...
"Diese Datei ist kein Mittel, um das Wachstum der verschiedenen Kernel-Caches (Inodes, Dentries, Pagecache usw.) zu steuern. Diese Objekte werden vom Kernel automatisch zurückgefordert, wenn an anderer Stelle im System Speicher benötigt wird."
Dies scheint nicht das zu sein, wonach ich suche, da dies nicht nur den Cache deaktivieren würde, sondern ich dachte, dass sich der virtuelle Speicher im Betriebssystem und nicht auf der Hardware befindet. Mein Ziel ist es, den Cache zu deaktivieren, sodass der gewünschte Speicher an anderer Stelle gesucht werden muss, z. B. im RAM.
BEARBEITEN
Zur Verdeutlichung verstehe ich, was das Deaktivieren des Caches für das System bedeutet. Es ist jedoch eine übliche Technik, die in Weltraumanwendungen verwendet wird, um die Zuverlässigkeit für sicherheitskritische Anwendungen zu erhöhen. Hier sind einige Ressourcen, die dieses Phänomen dokumentieren:
Reduzierung der durch Strahlung verursachten Fehler eingebetteter Software durch Cache-Speicher
Leitfaden für die Bodenstrahlungsprüfung von Mikroprozessoren in der Weltraumstrahlung
Es gibt sogar Bücher zum Thema:
Ionisierende Strahlungseffekte in der Elektronik: Von Erinnerungen zu Bildgebern
Antworten:
Sie können dies nicht direkt in Python tun, da Sie dazu ein Kernelmodul benötigen (und Root-Rechte zum Laden dieses Moduls).
Unter http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 finden Sie Informationen zum Ungültigmachen des L1-Cache (ungültig machen, nicht deaktivieren).
Unterschiedliche CPU-Architekturen (z. B. x86 oder ARM) erfordern unterschiedlichen Assembler-Code (CPU-Anweisungen), um den Cache zu deaktivieren. Ich bin mir nicht sicher, ob der Linux-Kernel die Möglichkeit hat, die L1 / L2 / L3 / L4-Caches zu deaktivieren, und wenn dies der Fall wäre, würde er meiner Meinung nach nur für kurze Zeit intern verwendet, da die CPU langsam ist ohne diese Caches.
Siehe Gibt es eine Möglichkeit, den CPU-Cache (L1 / L2) auf einem Linux-System zu deaktivieren? Hier finden Sie einen Link zum Deaktivieren des Caches auf einem x86 / x64-System (Sie müssen das Register ändern
cr0
). Überprüfen Sie für ARM das deaktivierte Verhalten des Cache .Ich bin mir nicht sicher, ob Sie vollständig verstehen, was die CPU-Caches tun. Können Sie bitte erläutern, warum Sie die Leistung Ihres Systems beeinträchtigen möchten?
quelle
Sie können dies mit einem kleinen ASM-Code erreichen, siehe Kapitel 11 des Intel System Programming Guide
Mir ist kein Python-Modul bekannt, das dies implementiert.
quelle