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

2023-12-31

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

In the 架构优化手册 http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html,描述了L1缓存可以以两种模式运行:

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

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

    2. 自适应模式:在自适应模式下,使用页目录的内存访问在共享 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(使用前将#替换为@)

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

  • 模块化算术和 NTT(有限域 DFT)优化

    我想使用 NTT 进行快速平方 参见快速大数平方计算 https stackoverflow com q 18465326 2521214 但即使对于非常大的数字 结果也很慢 超过 12000 位 所以我的问题是 有没有办法优化我的 NTT
  • 为什么 Collections.counter 这么慢?

    我正在尝试解决罗莎琳德的基本问题 即计算给定序列中的核苷酸 并在列表中返回结果 对于那些不熟悉生物信息学的人来说 它只是计算字符串中 4 个不同字符 A C G T 出现的次数 我期望collections Counter是最快的方法 首先
  • 为什么改变对象的 [[prototype]] 会降低性能?

    来自 MDN 文档standard setPrototypeOf功能 https developer mozilla org en US docs Web JavaScript Reference Global Objects Object
  • 处理大数据二进制文件

    我正在处理包含原始数据的大型二进制文件 每个大约 2 GB 这些文件具有明确定义的结构 其中每个文件都是一个数组events 每个事件都是一个数组data banks Each event and data bank有一个结构 header
  • 为什么同样的算法在 Scala 中运行比在 C# 中慢得多?以及如何让它更快?

    该算法根据序列中每个成员的变体创建序列的所有可能变体 C 代码 static void Main string args var arg new List
  • 超标量和 VLIW

    我想问一些关于ILP的问题 超标量处理器是标量处理器和矢量处理器的混合体 那么我可以说矢量处理器的架构遵循超标量吗 同时处理多个指令不会使体系结构超标量 因为流水线 多处理器或多核体系结构也可以实现这一点 这意味着什么 我读过 超标量 CP
  • C++ Exp 与 Log:哪个更快?

    我有一个 C 应用程序 需要比较两个值并决定哪个值更大 唯一的复杂之处是一个数字在对数空间中表示 而另一个则不是 例如 double log num 1 log 1 23 double num 2 1 24 如果我想比较num 1 and
  • 在什么情况下 do-while 比 while 更高效?

    while 与 do while while 和 do while 在功能上是等效的当块为空时 虽然 while 看起来更自然 do while keepLooping while keepLooping 使用空块的 while do wh
  • 比较两个 numpy 数组的最快方法

    我有两个数组 gt gt gt import numpy as np gt gt gt a np array 2 1 3 3 3 gt gt gt b np array 1 2 3 3 3 无论顺序如何 比较这两个数组的元素是否相等的最快方
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • jQuery 选择器:为什么 $("#id").find("p") 比 $("#id p") 更快

    该页面的作者 http 24ways org 2011 your jquery now with less suck http 24ways org 2011 your jquery now with less suck断言 jQuery
  • Android复杂布局线性和相对

    I have to implement a layout like shown in the diagram and I do not know the best combination to achieve the required de
  • 性能:cakephp-mysql 中的 UUID 与自动递增

    我正在搜索 cakePHP 生成的 UUID 32 个字符长 是否比自动增量在性能上更快 插入和选择操作的比较 我应该使用 cakePHP 生成的 UUID 还是使用 MySQL 的简单自动增量生成的 UUID 这是我发现的一个案例研究 但
  • SSL 速度:128 位与 256 位

    我决定使用 SSL 加密我的整个网站 即使实际上只有部分网站是必要的 最终结果是该网站现在有点慢 所以 我的问题是 我是否应该只加密网站的会员部分 请记住我在首页上有登录表单 我是否应该将加密降低到 128 位 如果站点总体较小 速度差异是
  • 为什么乘法比除法便宜?

    我最近编写了一个 Vector 3 类 并将我的 normalize 函数提交给朋友审阅 他说这很好 但我应该尽可能乘以倒数 因为在 CPU 时间上 乘法比除法便宜 我的问题很简单 这是为什么 从硬件可以更轻松地实现的基本运算的角度来考虑
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • SQL Azure 和 READ_COMMITTED_SNAPSHOT

    我想在 SQL Azure 数据库上将 READ COMMITTED SNAPSHOT 设置为 ON 但 Azure 不支持以下适用于其他版本的 SQL Server 的代码 ALTER DATABASE database name SET
  • 应用程序在加载 xml 布局文件的主线程中做了太多工作

    我正在制作一个 9x9 数独网格 其中 81 个单元格本身就是一个 3x3 网格 单个细胞看起来像这样 1 2 3 4 5 6 7 8 9 每个数字代表该单元格的铅笔注释 我有一个名为 cell layout xml 的文件 表示这种 3x
  • 为什么python+sqlite3特别慢?

    我尝试使用 Python 2 7 4 sqlite3 和 Firefox SQLite Manager 0 8 0 处理对同一数据库的相同请求 在小型数据库 8000 条记录 上 Python 和 Firefox 都运行得很快并且给出了相同
  • 使用 Nexus 10 在 Android 4.3 上滚动时性能不佳

    我的应用程序有一个带有一些滚动的列表视图 在我测试过的所有手机 Nexus One Nexus 4 和 Galaxy S3 4 上都表现得非常好 以 60fps 滚动 但 Nexus 10 上的表现很糟糕 大概在 15fps 左右 我已经将

随机推荐