如何解决超线程数据缓存上下文别名
在英特尔手册中,以下部分使我感到困惑:
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。 (与几个地址位进行异或运算将提供索引的分散,以便一个硬件线程的相邻索引将映射到另一线程的更多分离的索引。为不同的线程选择不同的位顺序的可能性较小,因为这样会增加延迟。分散在空间局部性高于缓存行粒度但小于路径大小粒度的情况下,减少冲突频率。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。