超线程数据缓存上下文别名

问题描述

在英特尔手册中,以下部分使我感到困惑:

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

由于Intel使用VIPT(等于PIPT)来访问缓存。

缓存别名将如何发生?

解决方法

基于英特尔®64和IA-32架构优化参考手册,2009年11月(248966-020),第2.6.1.3节:

物理处理器中的大多数资源被完全共享,以改善 动态利用资源,包括缓存和所有 执行单位。一些共享资源可以线性解决, 像DTLB一样,包含一个逻辑处理器ID位以区分 该条目是属于一个逻辑处理器还是另一个逻辑处理器。

根据上下文ID,第一级缓存可以在两种模式下运行 位:

  • 共享模式:L1数据缓存由两个逻辑完全共享 处理器。
  • 自适应模式:在自适应模式下,使用页面访问内存 目录在共享 L1数据缓存。

别名是可能的,因为处理器ID /上下文ID位(仅指示存储访问来自哪个虚拟处理器的位)对于不同的线程将有所不同,并且共享模式使用该位。自适应模式仅使用内存地址即可按通常的预期方式处理缓存。

具体来说,似乎没有记录在共享模式下索引高速缓存时如何使用处理器ID。 (与几个地址位进行异或运算将提供索引的分散,以便一个硬件线程的相邻索引将映射到另一线程的更多分离的索引。为不同的线程选择不同的位顺序的可能性较小,因为这样会增加延迟。分散在空间局部性高于缓存行粒度但小于路径大小粒度的情况下,减少冲突频率。)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...