如何禁用处理器的 L1 和 L2 缓存?

Aus*_*ics 10 linux ubuntu cache arm python

是否可以在 Ubuntu 14.04(最好使用 Python 等高级语言)上禁用 L1 和/或 L2 缓存?如果是这样,如何?

另外,在不同的架构之间禁用缓存会不会有很大的不同?如果是这样,我对 ARM Cortex-A15 更感兴趣。

编辑

在研究如何禁用缓存时,我确实从kernel.org 文档中找到了 /proc/sys/vm/ 中的“drop_caches”文件

“写入此内容将导致内核丢弃干净的缓存,以及可回收的平板对象,如 dentries 和 inode。一旦丢弃,它们的内存就会变得空闲。”

...

“这个文件不是控制各种内核缓存(inode、dentries、pagecache 等)增长的手段。当系统其他地方需要内存时,内核会自动回收这些对象。”

这似乎不是我正在寻找的,因为这不仅看起来不会禁用缓存,而且我认为虚拟内存驻留在操作系统中而不是硬件上。我的目标是禁用缓存,因此必须在其他地方寻找所需的内存,例如在 RAM 中。

编辑

澄清一下,我了解禁用缓存会对系统产生什么影响。但是,它是空间应用中常用的一种技术,可以提高安全关键应用的可靠性。以下是一些记录这种现象的资源:

通过高速缓存减少嵌入式软件辐射引起的故障

空间辐射环境中微处理器的地面辐射测试指南

甚至还有关于这个主题的书:

电子产品中的电离辐射效应:从存储器到成像器

小智 2

您不能直接在 Python 中执行此操作,因为您需要一个内核模块才能执行此操作(以及加载该模块的 root 权限)。

请参阅http://lxr.free-electrons.com/source/arch/arm/mm/cache-v7.S#L21了解如何使 L1 缓存无效(无效,而不是禁用)。

不同的CPU架构(例如x86与ARM)需要不同的汇编代码(CPU指令)来禁用缓存。我不确定 Linux 内核是否有可能禁用 L1/L2/L3/L4 缓存,如果有的话,我相信它只会在内部使用一小段时间,因为 CPU 很慢没有这些缓存。

请参阅是否可以在 Linux 系统上禁用 CPU 缓存 (L1/L2)?有关如何在 x86/x64 系统上禁用缓存的链接(您需要更改寄存器cr0)。对于 ARM,检查缓存禁用行为

我不确定你是否完全理解 CPU 缓存的作用。您能否详细说明为什么要削弱系统的性能?

  • 我是研发领域的软件开发人员,我们做了很多疯狂的事情。很抱歉,如果我在回答中遗漏了信息或含糊其辞,但我无法深入了解,因为这是专有信息。如果您感兴趣缓存与航空航天应用中的正常运行时间有关,这里有一篇公开的 [JPL 论文](https://nepp.nasa.gov/DocUploads/C288941E-C4DF-486A-9ADD317D00A26BC3/07-118% 20Irom_JPL%20Guideline%20for%20Ground%20Rad%20test.pdf)。这里还有一篇关于它的[期刊论文](http://ieeexplore.ieee.org/document/6847793/?reload=true&arnumber=6847793)。 (2认同)
  • 讽刺的是,今天禁用 L1 缓存是有意义的! (2认同)