Как отключить кеши L1 и L2 процессора?

Возможно ли отключить кеш L1 и / или L2 на Ubuntu 14.04 (желательно на языке более высокого уровня, таком как Python)? Если да, то как?

Кроме того, отключение кэша значительно отличается между разными архитектурами? Если это так, меня больше интересует ARM Cortex-A15.

РЕДАКТИРОВАТЬ

При исследовании того, как отключить кеш, я узнал о файле «drop_caches» в / proc / sys / vm / из документации kernel.org

«Написание этого приведет к тому, что ядро ​​удалит чистые кеши, а также восстанавливаемые объекты slab, такие как dentries и inodes. После их сброса их память станет бесплатной».

«Этот файл не является средством контроля роста различных кеш-файлов ядра (inodes, dentries, pagecache и т. Д.). Эти объекты автоматически восстанавливаются ядром, когда требуется память в другом месте в системе».

Это не похоже на то, что я ищу, поскольку это не похоже на то, что он отключит кеш, я думал, что виртуальная память находится в операционной системе, а не на аппаратном обеспечении. Моя цель – отключить кеш, чтобы желаемую память нужно искать в другом месте, например, в ОЗУ.

РЕДАКТИРОВАТЬ

Чтобы уточнить, я понимаю, что отключение кэша будет сделано для системы. Тем не менее, это распространенный метод, используемый в космических приложениях для повышения надежности критически важных приложений. Вот некоторые ресурсы, которые документируют это явление:

Сокращение вредоносных ошибок, вызванных встроенным программным обеспечением, через память кеш-памяти

Руководство по наземному радиационному тестированию микропроцессоров в космической радиационной среде

Есть даже книги по теме:

Ионизирующие радиационные эффекты в электронике: от воспоминаний до изображений

Вы не можете сделать это прямо в Python, так как вам нужен модуль ядра для этого (и права root для загрузки этого модуля).

См. http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 за то, что нужно, чтобы аннулировать кеш L1 (недействительно, а не отключить).

Для разной архитектуры процессора (например, x86 против ARM) требуется разный код сборки (инструкции CPU) для отключения кеша. Я не уверен, имеет ли ядро ​​Linux возможность отключить кеши L1 / L2 / L3 / L4, и если бы это было так, я полагаю, что он будет использоваться только внутри на короткое время, так как процессор медленный без этих кешей.

См. Есть ли способ отключить кеш процессора (L1 / L2) в системе Linux? для ссылки на то, как вы можете отключить кеш в системе x86 / x64 (вам нужно изменить регистр cr0 ). Для проверки ARM поведение кэша отключено .

Я не уверен, что вы полностью понимаете, что делают кэширование CPU. Не могли бы вы объяснить, почему вы хотите подорвать производительность вашей системы?

Вы можете выполнить это с помощью небольшого кода ASM, см. Главу 11 руководства по системному программированию Intel

11.5.3 Предотвращение кэширования

Чтобы отключить кеши L1, L2 и L3 после того, как они были включены и получили заполнение кеша, выполните следующие действия: 1. Введите режим кэширования без заполнения. (Установите флаг CD в регистре управления CR0 на 1, а флаг NW – на 0. 2. Сбросьте все кеши, используя инструкцию WBINVD. 3. Отключите MTRR и установите тип памяти по умолчанию на нераспакованный или установите все MTRR для типа нераспакованной памяти (см. обсуждение обсуждения поля TYPE и флага E в разделе 11.11.2.1, «IA32_MTRR_DEF_TYPE MSR»).

Я не знаю о модуле Python, который реализует это.