Puede lograr esto con un pequeño código ASM, consulte el capítulo 11 de la Guía de programación del sistema Intel
11.5.3 Prevención del almacenamiento en caché
Para deshabilitar las cachés L1, L2 y L3 después de que se hayan habilitado y hayan recibido rellenos de caché, realice los siguientes pasos:1. Ingrese al modo de caché sin relleno. (Establezca el indicador de CD en el registro de control CR0 en 1 y el indicador NW en 0.2. Vacíe todas las cachés usando la instrucción WBINVD. 3. Deshabilite los MTRR y configure el tipo de memoria predeterminado como sin caché o configure todos los MTRR para el tipo de memoria sin caché (consulte la discusión de la discusión del campo TYPE y el indicador E en la Sección 11.11.2.1, “IA32_MTRR_DEF_TYPE MSR”).
No conozco ningún módulo de Python que implemente esto.
No puede hacerlo directamente en Python, ya que necesita un módulo del kernel para hacerlo (y derechos de root para cargar ese módulo).
Consulte http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 para saber qué se necesita para invalidar la memoria caché L1 (invalidar, no deshabilitar).
Diferentes arquitecturas de CPU (por ejemplo, x86 vs ARM) requieren un código de ensamblaje diferente (instrucciones de CPU) para deshabilitar el caché. No estoy seguro de si el kernel de Linux tiene alguna posibilidad de deshabilitar las cachés L1/L2/L3/L4 y, si la tuviera, creo que solo se usaría internamente durante un corto período de tiempo, ya que la CPU es lenta. sin estos cachés.
Consulte ¿Hay alguna forma de deshabilitar la memoria caché de la CPU (L1/L2) en un sistema Linux? para obtener un enlace sobre cómo puede deshabilitar el caché en un sistema x86/x64 (debe cambiar el registro cr0
). Para ARM, verifique el comportamiento de Caché deshabilitado.
No estoy seguro de que entienda completamente lo que hacen los cachés de la CPU. ¿Puede explicar por qué desea paralizar el rendimiento de su sistema?