假设我正在通过 L1/L2 缓存写入 Core Duo 系统上的 RAM 位置。
假设我要写入 RAM 中的一个持久位置,然后很快就会出现恐慌 Linux 内核。该位置是持久的,这意味着它不会在 CPU 重新启动期间重新启动,并且会在重新启动后被拾取。
作为重启/恐慌的一部分,Linux 会刷新 CPU 缓存吗?
CPU会在重启前刷新缓存吗?
还是我应该手动执行?如何?
更新:我的缓存不是直写的。
问题是,CPU 规范是否定义了这种行为?
假设我正在通过 L1/L2 缓存写入 Core Duo 系统上的 RAM 位置。
假设我要写入 RAM 中的一个持久位置,然后很快就会出现恐慌 Linux 内核。该位置是持久的,这意味着它不会在 CPU 重新启动期间重新启动,并且会在重新启动后被拾取。
作为重启/恐慌的一部分,Linux 会刷新 CPU 缓存吗?
CPU会在重启前刷新缓存吗?
还是我应该手动执行?如何?
更新:我的缓存不是直写的。
问题是,CPU 规范是否定义了这种行为?
可能最合适的方法是将包含持久位置的页面标记为不可缓存。这样,对持久位置的写入将始终绕过缓存(有效地直写)。当然,你的缓存可能是直写的,所以这可能是多余的——你应该先检查一下。
缓存可能不会被刷新,因为用户、系统工程师或 IT 支持人员可能需要运行系统诊断或调试器来诊断和转储计算机状态。缓存可能在启动时刷新或不刷新,这取决于操作系统的类型和版本、编程语言和事件中使用的应用程序。它可能是启动时的可选选项(来自任何 BIOS),但它可能会在开机时初始化,但不一定在热重启时(如果可用)。