关于超线程中L1缓存的自适应模式

时间:2012-09-03 14:36:39

标签: caching intel hyperthreading

我是一名学生,最近在进行一些关于超线程的研究。我对这个功能有点困惑--L1数据缓存上下文模式。

architecture optimization manual中,描述了L1缓存可以在两种模式下运行:

  • 第一级缓存可以在两种模式下运行,具体取决于上下文ID位:

    1. 共享模式:L1数据缓存由两个逻辑处理器完全共享。

    2. 自适应模式:在自适应模式下,使用页面目录的内存访问在共享L1数据缓存的逻辑处理器之间进行相同的映射。

但是,我很好奇缓存如何根据描述在自适应模式下进行分区。

3 个答案:

答案 0 :(得分:3)

在Intel arch上,L1 Context ID的值为1表示L1数据缓存模式可以设置为自适应模式或共享模式,而值0表示不支持此功能。检查IA32_MISC_ENABLE MSR Bit 24(L1数据缓存上下文模式)的定义以获取详细信息。

根据Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 3A(第11章/缓存控制),我在下面引用:

  • 分享模式
  

在共享模式下,L1数据缓存在逻辑处理器之间进行竞争性共享。即使逻辑处理器使用相同的CR3寄存器和分页模式也是如此。在共享模式下,L1数据高速缓存中的线性地址可以是别名,这意味着高速缓存中的一个线性地址可以指向不同的物理位置。解决混叠的机制可能导致颠簸。因此,IA32_MISC_ENABLE [bit 24] = 0是基于支持Intel超线程技术的Intel NetBurst微体系结构的处理器的首选配置。

  • 自适应模式
  

自适应模式有助于逻辑处理器之间的L1数据缓存共享。在自适应模式下运行时,L1数据高速缓存在同一内核中的逻辑处理器之间共享,如果:

     

•共享缓存的逻辑处理器的CR3控制寄存器是相同的。

     

•共享缓存的逻辑处理器使用相同的分页模式。

     

在这种情况下,整个L1数据缓存可供每个逻辑处理器使用(而不是竞争性共享)。   如果共享L1数据高速缓存的逻辑处理器的CR3值不同,或者逻辑处理器使用不同的分页模式,则处理器竞争高速缓存资源。这减少了每个逻辑处理器的高速缓存的有效大小。   不允许对缓存进行别名化(这会阻止数据抖动)。

我只是猜测没有明确的方法来分区L1数据缓存。

答案 1 :(得分:2)

该文档只是声明如果您使用自适应模式,并且如果CR3或分页模式在核心之间不同,则不会共享缓存,并且内核会“竞争”缓存。它没有说明分区是如何工作的。

实现这一目标最直接的方式是静态地为每个处理器保留数据高速缓存的一半方式。这实际上将静态地将一半数据缓存分配给每个处理器。

或者,他们可以向每个缓存行的虚拟标记添加一个额外的位,以区分该行属于哪个处理器。这将允许缓存的动态分区。这比静态分区更适合缓存的“竞争”描述。

如果你真的需要知道,你可以设计一些微基准来验证这些方案是否真正使用过。

答案 2 :(得分:2)

L1数据缓存不会在任何一种模式下进行分区,并且总是竞争共享。

请注意,手册中存在一个明显的错误,该模式不是由上下文ID位决定的,而是由IA32_MISC_ENABLE[24]决定的。后来的HT Northwood和所有带有HT的Prescott处理器的步进都支持此增强功能。默认值为零,表示自适应模式。但是,在某些处理器中,由于这些处理器中的错误仅在自适应模式下发生,因此更新的BIOS可能会通过设置IA32_MISC_ENABLE[24]来切换到共享模式。

在Northwood与HT的较早版本中,仅支持共享模式。在共享模式下,当向L1数据高速缓存发出加载请求时,该请求首先在“快速路径”上进行处理,这涉及根据线性地址的第11-15位进行方式预测,并产生推测性命中/结果错过信号。在具有HT的处理器中,还将比较逻辑核心ID。部分标签和逻辑核心ID都必须匹配才能获得推测性命中。通常,这有助于提高正确的投机命中率。

如果两个同级逻辑核心在相同的分页模式下运行并且具有相同的CR3值,这表明来自两个核心的访问使用相同的页表(如果启用了分页),那么即使产生推测性命中,甚至会更好如果逻辑核心ID在缓存的快速路径上不匹配。

在自适应模式下,只要更改其中一个内核的分页模式或CR3寄存器,就会计算上下文ID值。如果寻呼模式和CR3值匹配,则将上下文ID位设置为两个可能值之一。否则,将其设置为其他值。当向高速缓存发出加载请求时,将检查上下文ID。如果指示核心具有相同的地址转换结构,则逻辑核心ID比较结果将被忽略,如果部分虚拟标签匹配,则会产生推测性命中。否则,逻辑核心ID比较将在共享模式下生效。