fra*_*ank 6 performance intel cpu-architecture hyperthreading cpu-cache
我是一名学生,最近在研究超线程。我对这个功能有点困惑——L1 数据缓存上下文模式。
在架构优化手册中,描述了L1缓存可以在两种模式下运行:
一级缓存可以根据上下文 ID 位以两种模式运行:
共享模式:L1 数据缓存由两个逻辑处理器完全共享。
自适应模式:在自适应模式下,使用页目录的内存访问在共享 L1 数据缓存的逻辑处理器之间被完全映射。
但是,我很好奇缓存如何根据描述在自适应模式下进行分区。
小智 6
在Intel arch上,值为1L1 Context ID表示L1数据缓存模式可以设置为自适应模式或共享模式,而值为0表示不支持此功能。详细信息请查看(L1 Data Cache Context Mode)的定义IA32_MISC_ENABLE MSR Bit 24。
根据Intel\xc2\xae 64 和 IA-32 架构开发人员手册:卷。3A(第11章/缓存控制),我在下面引用:
\n\n\n在共享模式下,L1 数据缓存在逻辑处理器之间竞争共享。即使逻辑处理器使用相同的 CR3 寄存器和分页模式也是如此。在共享模式下,L1数据缓存中的线性地址可以是别名,这意味着缓存中的一个线性地址可以指向不同的物理位置。解决混叠的机制可能会导致系统崩溃。因此,IA32_MISC_ENABLE[位 24] = 0 是基于支持 Intel 超线程技术的 Intel NetBurst 微架构的处理器的首选配置。
\n
\n\n自适应模式有利于逻辑处理器之间的 L1 数据缓存共享。当在自适应模式下运行时,L1 数据缓存在同一内核中的逻辑处理器之间共享,如果:
\n\xe2\x80\xa2 共享高速缓存的逻辑处理器的 CR3 控制寄存器是相同的。
\n\xe2\x80\xa2 共享缓存的逻辑处理器使用相同的分页模式。
\n在这种情况下,整个 L1 数据缓存可供每个逻辑处理器使用(而不是竞争共享)。\n如果共享 L1 数据缓存的逻辑处理器的 CR3 值不同,或者逻辑处理器使用不同的分页模式,则处理器会竞争缓存资源。这会减少每个逻辑处理器的缓存的有效大小。\n不允许使用缓存别名(这可以防止数据抖动)。
\n
我只是猜测 L1 数据缓存的分区没有明确的方法。
\n