我是一名学生,最近正在研究超线程。我对 L1 数据缓存上下文模式这个功能有点困惑。
In the 架构优化手册 http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html,描述了L1缓存可以以两种模式运行:
-
一级缓存可以根据上下文 ID 位以两种模式运行:
共享模式:L1数据缓存由两个逻辑处理器完全共享。
自适应模式:在自适应模式下,使用页目录的内存访问在共享 L1 数据缓存的逻辑处理器之间进行相同的映射。
但是,我很好奇缓存如何根据描述在自适应模式下进行分区。
在 Intel arch 上,值为 1L1 Context ID
表示L1数据缓存模式可以设置为自适应模式或共享模式,而值为0表示不支持此功能。检查定义IA32_MISC_ENABLE MSR Bit 24
(L1 数据缓存上下文模式)了解详细信息。
根据英特尔® 64 和 IA-32 架构开发人员手册:卷。 3A http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html(第11章/缓存控制),我在下面引用:
在共享模式下,L1 数据缓存在逻辑处理器之间竞争共享。即使逻辑处理器使用相同的 CR3 寄存器和分页模式也是如此。在共享模式下,L1数据缓存中的线性地址可以是别名,这意味着缓存中的一个线性地址可以指向不同的物理位置。解决混叠的机制可能会导致系统抖动。因此,IA32_MISC_ENABLE[位 24] = 0 是基于支持 Intel 超线程技术的 Intel NetBurst 微架构的处理器的首选配置。
自适应模式有利于逻辑处理器之间的 L1 数据缓存共享。当在自适应模式下运行时,L1 数据缓存在同一内核中的逻辑处理器之间共享,如果:
• 共享高速缓存的逻辑处理器的CR3 控制寄存器是相同的。
• 共享高速缓存的逻辑处理器使用相同的分页模式。
在这种情况下,整个 L1 数据缓存可供每个逻辑处理器使用(而不是竞争性共享)。
如果共享L1数据缓存的逻辑处理器的CR3值不同或者逻辑处理器使用不同的分页模式,则处理器会竞争缓存资源。这减少了每个逻辑处理器的高速缓存的有效大小。
不允许使用缓存别名(这可以防止数据抖动)。
我只是猜测 L1 数据缓存的分区没有明确的方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)