これは、小さな ASM コードで実現できます。インテル システム プログラミング ガイドの第 11 章を参照してください
<ブロック引用>11.5.3 キャッシングの防止
L1、L2、および L3 キャッシュを有効にしてキャッシュ フィルを受信した後で無効にするには、次の手順を実行します。ノーフィル キャッシュ モードに入ります。 (制御レジスタ CR0 の CD フラグを 1 に設定し、NW フラグを 0.2 に設定します。WBINVD 命令を使用してすべてのキャッシュをフラッシュします。3. MTRR を無効にし、デフォルトのメモリ タイプを非キャッシュに設定するか、すべての MTRR を非キャッシュ メモリ タイプに設定します (「セクション 11.11.2.1「IA32_MTRR_DEF_TYPE MSR」の TYPE フィールドと E フラグの説明の説明)。
これを実装する Python モジュールは知りません。
Python で直接行うことはできません。これを行うにはカーネル モジュール (およびそのモジュールをロードするためのルート権限) が必要なためです。
L1 キャッシュを無効にする (無効にするのではなく無効にする) ために必要なことについては、http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21 を参照してください。
異なる CPU アーキテクチャ (x86 と ARM など) では、キャッシュを無効にするために異なるアセンブリ コード (CPU 命令) が必要です。 Linux カーネルが L1/L2/L3/L4 キャッシュを無効にする可能性があるかどうかはわかりません。もしそうなら、CPU が遅いため、短期間だけ内部的に使用されると思います。これらのキャッシュなし。
Linux システムで CPU キャッシュ (L1/L2) を無効にする方法はありますか? を参照してください。 x86/x64 システムでキャッシュを無効にする方法に関するリンク (レジスタ cr0
を変更する必要があります) )。 ARM の場合は、キャッシュが無効になっている動作を確認してください。
CPU キャッシュの機能を完全に理解しているかどうかはわかりません。システムのパフォーマンスを低下させたい理由を詳しく説明していただけますか?