Skylake 中干净缓存行的写回?

2024-03-30

我观察到 Skylake SP 在真实硬件上对干净的缓存行进行写回。

@Leeor 对这篇文章的回答对于 Intel Core i3/i7,数据从缓存集中逐出后的去向 https://stackoverflow.com/questions/19416964/where-data-goes-after-eviction-from-cache-set-in-case-of-intel-core-i3-i7指出

从 Skylake 开始,某些 CPU(服务器部分)不再具有包容性 L3,而是具有非包容性(以支持增加的 L2)。这意味着当 L2 老化时,干净的行也可能被写回,因为 L3 通常不保存它们的副本。

我不明白为什么 L3 的非包容性会使 L2 干净的缓存行被写回,有人可以向我解释一下吗?

Edit:

我终于找到了一种方法来衡量这些干净写回的数量。在 30 亿次读取中,只有 20 次通过性能计数器干净地写回 DRAM。

 Performance counter stats for 'system wide':                                    
                                                                                 
     3,697,263,307      uncore_imc_1/event=0x4,umask=0x3/   /* cas_count_read */               
                20      uncore_imc_1/event=0xb8,umask=0x11/ /* wr_cas_rank0 BG0 */
                                                                                 
    1826.846941108 seconds time elapsed

另一件事是我只观察到那些干净的写回双插座平台。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Skylake 中干净缓存行的写回? 的相关文章

  • 为什么 Linux/gnu 链接器选择地址 0x400000?

    我正在 Linux x86 64 上试验 ELF 可执行文件和 gnu 工具链 我已经链接并剥离 手动 Hello World 测试 global start text start mov 1 rax 转换为 267 字节 ELF64 可执
  • BOOST_LIKELY 和 __builtin_expect 仍然相关吗?

    我明白所解释的内容here https stackoverflow com questions 7346929 why do we use builtin expect when a straightforward way is to us
  • 如何确定 Windows 10 上可执行二进制文件的体系结构

    给定一些Random exe在 Windows 上 我如何确定 它的CPU架构 例如Intel ARM 以及 它的位数 例如 32 或 64 我可以使用文件资源管理器 其他工具或编程方法中的属性吗 Cygwin https www cygw
  • 安装apk时INSTALL_FAILED_NO_MATCHING_ABIS

    我尝试将我的应用程序安装到 Android L Preview Intel Atom 虚拟设备中 但失败并出现错误 INSTALL FAILED NO MATCHING ABIS 这是什么意思 INSTALL FAILED NO MATCH
  • 调用always_inline‘_mm_mullo_epi32’时内联失败:目标特定选项不匹配

    我正在尝试使用 cmake 编译 C 程序 该程序使用 SIMD 内在函数 当我尝试编译它时 出现两个错误 usr lib gcc x86 64 linux gnu 5 include smmintrin h 326 1 错误 调用alwa
  • FASM 是否使用 Intel 语法?

    我尝试在 FASM 中编译以下代码 mov DWORD PTR ebp 4 1234567 它给了我一个 无效表达式 错误 但是以下代码有效 mov DWORD ebp 4 1234567 那么 FASM 是否使用 Intel 语法 我假设
  • 早期的BIOS怎么能使用CALL呢?

    我纯粹是出于爱好原因 试图理解 PC 中的一些低级代码 我为随机的旧千兆字节 MB 下载了一个过时的 BIOS ROM 映像 https www gigabyte com Motherboard GA 8I845GE775 G rev 10
  • C#:TurboBoost 激活时如何获取 Intel i 系列 CPU 的当前时钟速度

    我知道有可能获得此信息 Intel 自己的 TurboBoost 侧边栏小工具似乎使用 ActiveX 控件来确定 TurboBoost 处于活动状态时 i3 i5 i7 CPU 的当前时钟速度 但是 我想在 C 中以编程方式执行此操作 从
  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 如何在汇编程序中使用 C 库?

    我想知道如何用汇编语言编写文本编辑器 但现代操作系统需要 C 库 特别是对于它们的窗口系统 我找到了这个page http pengu1n is programmer com posts 8304 html 这对我有很大帮助 但我想知道是否
  • x86 实模式下的段大小

    我对实模式下段的大小有一个疑问 因为它们不能超过 64K 但可以小于那个 http support microsoft com kb 120069 我的问题是这些段大小和基地址是如何初始化的 就像保护模式下有 GDT 和 LDT 一样 实模
  • 获取比较指令的值

    据我了解 cmp 指令将设置标志寄存器中的一些位 然后 您可以使用 jle jnp 等指令基于这些指令进行分支 我想知道如何从比较中恢复整数值 示例 以下是有效的 c 语法 y x a gt 13 因此 a 与 13 进行比较 得到 tru
  • 现代缓存中的方式预测

    我们知道 就缓存命中时间而言 直接映射缓存优于集合关联缓存 因为不涉及特定标签的搜索 另一方面 组关联缓存通常比直接映射缓存具有更好的命中率 我读到 现代处理器试图通过使用一种称为路径预测的技术来结合两者的优点 他们预测给定集合中最有可能发
  • 编写 AMD64 SysV 程序集时使用哪些寄存器作为临时寄存器?

    我正在使用实现一个功能cpuid根据 AMD64 SysV ABI 进行组装 我需要在函数本身中使用 2 个临时寄存器 第一个用于累积返回值 第二个用作计数器 我的功能目前如下所示 zero argument function some c
  • 为什么 SSE 对齐读取 + 随机播放在某些 CPU 上比未对齐读取慢,而在其他 CPU 上则不然?

    在尝试优化有限差分代码所需的未对齐读取时 我更改了未对齐的负载 如下所示 m128 pm1 mm loadu ps H k 1 进入这个对齐的读取 随机播放代码 m128 p0 mm load ps H k m128 pm4 mm load
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 为什么x86分页没有特权环的概念?

    早在 1982 年 当 Intel 发布 80286 时 他们在分段方案中添加了 4 个特权级别 环 0 3 由全局描述符表 GDT 和局部描述符表 LDT 中的 2 位指定 在 80386 处理器中 Intel 添加了分页功能 但令人惊讶
  • 在 x86-64 CPU 上通过交叉修改代码重现意外行为

    Question 对于可能在 x86 或 x86 x64 系统上触发意外行为的交叉修改代码有哪些想法 在这些系统中 交叉修改代码中的所有操作均已正确完成 但在执行处理器之前执行序列化指令除外修改代码 如下所述 我有一个 Core 2 Duo

随机推荐

  • Java 堆空间与 GSON

    我正在使用 GSON 创建一些大的 JSON 文件 以从 GTFS Google Transit 创建自定义 JSON 问题是当我从对象类转换为 JSON 时 Gson gson new Gson String rutasJSON gson
  • 用于测试是否正在构建应用程序扩展的预处理器宏是什么?

    这个问题纯粹基于公开发布的有关 iOS 中应用程序扩展引入的文档 随着引入应用程序扩展 https developer apple com library prerelease ios documentation General Conce
  • AppCompat v7:21 拆分操作栏损坏?

    我目前正在开发一个应用程序 其中使用经过大量修改的拆分操作栏 以下是应用程序当前状态的链接 您会注意到顶部有一个透明的操作栏 其中有一个自定义视图 底部有一个拆分在一起的操作栏 底部视图实际上是一个单独的操作项 其中包含一个自定义视图 并且
  • 如何设置gridview行颜色,我尝试过,但它显示强制转换无效?

    protected void gvcolors RowDataBound object sender GridViewRowEventArgs e if e Row RowType DataControlRowType DataRow in
  • 如何添加UIActionSheet按钮复选标记?

    我想知道如何以最简单的方式在 actionSheet 按钮右侧添加复选标记 下面是截图Podcasts app 请注意 该解决方案可能会在将来的 iOS 更新中崩溃 我是 访问未记录的私有 API 这样的解决方案非常脆弱 请参阅下面的评论
  • 如何将密码文本与 bcrypt 哈希值进行比较?

    我的应用程序中有一个用例 应该阻止用户在重置密码时选择最近 3 个密码之一 我使用 Angular 作为前端 使用 Spring Boot 作为后端 在我的场景中 用户密码存储为 bcrypt 哈希 如何将用户输入的密码与最近存储的 3 个
  • 如何替换R数据框中多列中的多个值?

    假设我有以下数据框 真正的数据框是 10 个 labelx 列 id lt c 1 2 3 4 5 6 7 8 label1 lt c apple shoe banana hat dog radio tree pie label2 lt c
  • 当焦点从角度输入中移出时触发验证?

    当我们不断在文本框中输入内容时 电子邮件验证将被触发 我希望当用户将焦点移出文本框时触发此验证 下面是我的代码
  • 有没有一种好的方法可以在Linux中禁止屏幕保护程序?

    我正在寻找一种体面的 不蹩脚的方式来抑制 xscreensaver kscreensaver 或 gnome screensaver 无论哪一个可能正在运行 最好以与屏幕保护程序无关的方式 并且它绝对必须执行fast 我读过xscreens
  • 如何使用ABAddressBook删除iPhone通讯录中的记录?

    我正在学习地址簿框架 然后我想从iPhone通讯录中删除记录 我检查了文档并发现了一个名为ABAddressBookRemoveRecord 但我找不到删除记录的方法 比如用户选择一条记录 然后点击删除按钮 然后该记录就会被删除 到目前为止
  • 安卓 |内容观察者 |内容 URI 不包含资源 ID

    我正在尝试检测 Android 应用程序上的屏幕截图 我使用 contentObserver 来检测媒体目录中的更改 而不是使用 FileObserver 因为已知问题 https code google com p android iss
  • 通过 Internet 发送 UDP 数据包

    我正在尝试了解 P2P 去中心化网络的一些细节 我的问题如下 假设我有两台名为 comp1 和 comp2 的机器 现在 comp1 设置在我的家庭网络中的路由器后面 comp2 位于我的办公室中 也位于路由器后面 我是否可以像这样在 In
  • WriteFile 返回错误代码 87

    我正在开发一个写入 HID 设备的程序 但收到错误 87 WriteFile 函数参数无效 我从 Jan Axelson 的 USB Complete 获得了这些功能 所以我不确定为什么会收到错误 我用它来查找我的设备 private vo
  • ItemsSource 绑定不更新值

    我需要列出物品清单 我将用户集合绑定到列表框 一切都运行良好 但列表框中的项目不会实时更新 它们根本不会通过此绑定进行更新 因此 当我从列表中删除任何用户时 即使正确更改了列表框的源 列表框也不会更新 源位于数据视图模型中的路径 DataV
  • 禁止 Ruby 中的特定警告

    我看过很多帖子提供 W0标记作为此问题的答案 但我不想抑制所有警告 而只是抑制特定值的警告 我正在 Ruby 1 8 7 上运行一个非 Rails 应用程序 尽管它使用 ActiveRecord 我想保留除以下弃用警告之外的所有警告 Obj
  • Android 辅助功能对讲来说出片段的标题

    有没有办法让 Android 可访问性中的对讲功能在片段事务后说些什么 我基本上希望对讲在切换后说出片段的名称 标题 这些标题设置为操作栏的标题 可以在那里访问吗 用户可以将手指移动到操作栏中的文本顶部来了解他们所在的屏幕 但除非他们已经熟
  • 应用程序池回收如何影响 ASP Net 会话状态?

    我知道当应用程序池被回收时 会启动一个新的工作进程 但我对在此过程中如何处理过期和有效会话感到困惑 哪些传递给新的工作进程线程 哪些被消除 它将做什么 用户A的会话已过期 用户B的会话有效 回收后 当用户A和用户B请求时 他们的会话状态会是
  • Maven 属性加载顺序

    我知道 Maven 属性可以在不同的位置定义 m2 settings xml在本地机器上
  • 如果我只知道文件名的一部分,如何打开文件?

    我需要打开一个我不知道完整文件名的文件 我知道文件名是这样的 filename esy 我确信该文件在给定目录中只出现一次 filename esy已经是一个 shell Ready 通配符 如果情况总是如此 您可以简单地 const SO
  • Skylake 中干净缓存行的写回?

    我观察到 Skylake SP 在真实硬件上对干净的缓存行进行写回 Leeor 对这篇文章的回答对于 Intel Core i3 i7 数据从缓存集中逐出后的去向 https stackoverflow com questions 1941