gun*_*lls 4 cpu-architecture cpu-cache
如果在阈值时间内没有遇到任何指令,缓存是否会自行刷新?
我的意思是假设,我有一台多核机器,并且上面有隔离的内核。现在,对于其中一个核心,有几秒钟没有活动。在这种情况下,是否会在经过一定时间后刷新指令缓存中的最后一条指令?
我知道这可能取决于体系结构,但我正在寻找有关该概念的一般指示。
如果在特定空闲状态下对缓存进行电源门控,并且使用易失性存储器技术(例如 SRAM)实现,则缓存将丢失其内容。在这种情况下,为了维护架构状态,必须将所有脏行写入一些将保留其状态的内存结构(例如内存层次结构的下一级)。大多数处理器支持电源门控空闲状态。例如,在 Intel 处理器上,在核心 C6 和更深的状态下,核心是完全电源门控的,包括所有私有缓存。当内核从这些状态中的任何一个唤醒时,缓存将变冷。
在空闲状态下,为了省电,刷新缓存但不对其进行电源门控很有用。ACPI 规范在第 8.1.4 节(6.3 版)中定义了这样一种状态,称为 C3:
在 C3 状态下,处理器的缓存保持状态,但处理器不需要监听总线主控或多处理器 CPU 对内存的访问。
稍后在同一部分详细说明 C3 不需要保留缓存的状态,但也不需要刷新它。本质上,ACPI C3 中的核心不保证缓存一致性。在 ACPI C3 的实现中,要么需要系统软件在核心进入 C3 之前手动刷新缓存,要么硬件将采用某种机制来确保一致性(刷新不是唯一的方法)。由于不必参与缓存一致性,这种空闲状态与较浅的状态相比可以潜在地节省更多功率。
据我所知,唯一实现 ACPI C3 非电源门控版本的处理器是 Intel 的处理器,从 Pentium II 开始。所有现有的 Intel x86 处理器都可以根据它们实现 ACPI C3 的方式进行分类:
请注意,时钟门控通过以下方式节省功耗:
使用时钟门控,动态功耗基本上降为零。但是仍然消耗静态功率来维持易失性存储器结构中的状态。
许多处理器包括至少一层在多个内核之间共享的片上缓存。处理器品牌 Core Solo 和 Core Duo(无论是基于 Enhanced Pentium M 还是 Core 微架构)引入了一个空闲状态,它在封装级别实现了 ACPI C3,其中共享缓存可能会逐渐断电和恢复(英特尔的封装级状态对应于 ACPI 规范中的系统级状态)。此硬件状态称为 PC7、增强型深度睡眠状态、深度 C4 或其他名称,具体取决于处理器。与私有缓存相比,共享缓存要大得多,因此完全刷新需要更多时间。这会降低 PC7 的有效性。因此,它是逐渐刷新的(进入 CC7 的包的最后一个内核执行此操作)。此外,当包退出PC7时,共享缓存也逐渐开启,可以降低下次进入PC7的成本。这是基本思想,但细节取决于处理器。在 PC7 中,封装的重要部分是电源门控的。
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |