CPU缓存性能。存储未命中与加载未命中

2024-04-25

我使用 perf 作为基本事件计数器。我正在开发一个遭受数据缓存存储未命中的程序。其中比例高达80%。

我知道缓存原则上是如何工作的。它会在各种未命中情况下从内存加载,并在需要时从缓存中删除数据。我不明白的是:存储未命中和加载未命中之间有什么区别。它与加载和存储有何不同。你怎么能储存错过呢?


加载未命中(如您所知)是指处理器需要从主内存中获取数据,但缓存中不存在数据。因此,每当处理器想要从主内存中获取一些数据时,它就需要缓存,如果数据已经加载,您将获得加载命中,否则您将获得加载未命中。

存储未命中与处理器何时要将新计算的数据写回主存有关。当要将数据写回主存时,必须确保高速缓存和主存的内容一致彼此同步。您可以在此处找到两种不同的政策,这可能会发生:撰写政策 http://en.wikipedia.org/wiki/Cache_%28computing%29#Writing_policies.

所以无论你选择什么策略,你首先需要检查数据是否已经在缓存中,以便你可以先将其存储到缓存中(因为它更快),以及你要查找的数据块是否已从缓存中逐出,您会得到与该缓存相关的存储未命中。

你可以检查小程序在这里 http://www.cs.iastate.edu/~prabhu/Tutorial/CACHE/interac.html,更好地了解不同场景中会发生什么。

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

CPU缓存性能。存储未命中与加载未命中 的相关文章

  • C# 字典循环增强

    我有一本包含大约 100 万个条目的字典 我不断地循环字典 public void DoAllJobs foreach KeyValuePair
  • 如何提高MySQL INSERT和UPDATE性能?

    我们数据库中的 INSERT 和 UPDATE 语句的性能似乎正在下降 并导致我们的 Web 应用程序性能不佳 表是InnoDB 应用程序使用事务 我可以做一些简单的调整来加快速度吗 我认为我们可能会遇到一些锁定问题 我怎样才能找到答案 你
  • 如何在 Vaadin 中禁用浏览器缓存

    我的问题很短 希望很容易解决 我怎样才能完全禁用我的浏览器缓存用vaadin实现的webservice 我想完全禁用缓存 因为当我尝试进行一些 PDF 流式传输并在浏览器中显示它们时遇到问题 我已经阅读了有关我的问题的解决方案 例如这里 使
  • Google BigQuery:检索每行的最后版本

    我有一个 Google BigQuery 表 其中包含所有版本的资源 每次创建 更新 删除资源时 都会添加一个新行 并递增版本号 该数字将是添加行时的时间戳 ID ResourceID Action Count Timestamp ABC
  • 使用 html 属性的 DOM 惩罚

    我正在考虑使用 HTML5 数据属性来更轻松地编写我的应用程序的第三方脚本 因此 考虑两种情况 页面上有 10 000 个 HTML 元素 例如 div Sticker div 还有其他 10 000 个 HTML 元素 例如 div St
  • 加载实体实例需要超过 1 秒

    我在EF中遇到了一件有趣的事情 如果我们使用基础实体获取子实体 则加载实体需要更多时间 我的模型看起来像这样 public abstract class BaseDocument public Guid Id get set public
  • Rails 缓存数据库查询和最佳实践

    我网站上的数据库负载变得非常高 因此我需要缓存每小时被调用 1000 次且结果不变的常见查询 例如 在我的城市模型上 我执行以下操作 def self fetch id Rails cache fetch city id City find
  • 在 R 中替换数据帧中最低列表值的最有效方法

    我有一个数据框 df 其中包含为每个受试者记录的数字列表 向量 用于测试项目的两次重复 subj item rep vec s1 1 1 2 1 4 5 8 4 7 s1 1 2 1 1 3 4 7 5 3 s1 2 1 6 5 4 1 2
  • 如何编写更高效的代码

    世纪问题 我基本上想知道如果我将此代码编写为几个不同的变量或使用小数组 哪个会更有效 int x 34 int y 28 int z 293 vs double coordinate 3 34 28 293 我有一个坐标结构 我将按以下方式
  • 就性能而言,在页面上显示 1000 张图像的最佳方法是什么?

    我试图在一个页面上显示 1000 个相当小的图像 确实很多 但超出了我的控制范围 当一次性加载所有图像时 一次渲染 1000 张图像 性能显然会受到严重影响 我尝试在滚动时应用图像 src 大量 250px 滚动 25 个图像加载等 然后尝
  • Google App Engine - 破坏服务 URL 缓存

    我终于设法让图像在 App Engine 上正确旋转 现在我正在努力绕过缓存的图像 而标准缓存清除技术不起作用 因此 第一次旋转图像时 我得到了一个不同的 URL 并且图像被旋转 第二次旋转它时 我得到相同的 URL 只有在附加 s300
  • Android 在 ROOM 数据库中插入大量数据

    我有大约 10 个模型 每个模型都有超过 120K 行和 90 列的记录 其中包含双数组值 在 Room 中插入任何模型都需要超过 125 130 秒 任何人都可以建议我需要做什么才能使用一些批量插入技术来保存所有这些 120K 该技术大约
  • 如何提高QNX6下Eclipse IDE的性能

    我们在 VMWare 环境中通过 QNX6 运行 Eclipse 速度非常慢 Eclipse 是这样启动的 usr qnx630 host qnx6 x86 usr qde eclipse eclipse data root workspa
  • Python:多重分配与单独分配速度

    我一直在寻求从我的代码中挤出更多的性能 最近 在浏览时这个 Python 维基页面 https wiki python org moin PythonSpeed 我发现了这个说法 多重分配比单独分配慢 例如 x y a b 比 x a y
  • 对大数据块进行反应非阻塞渲染

    最近我开始学习反应并想知道是否有某种模式可以用于大数据的非阻塞 UI 线程渲染 比方说 我们采取这个例子 https www mendix com tech blog making react reactive pursuit high p
  • PrintStream是有缓冲的,但是flush不会降低性能,而BufferedOutputStream会加速性能

    我预计由于 PrintStream 是缓冲的 通过在每次 print 之后添加刷新操作 速度性能应该会显着降低 但事实并非如此 如下面的代码片段所示 此外 将 PrintStream 包裹在 BufferedOutputStream 周围可
  • 避免 AngularJS 部分视图在 IE 中缓存

    我正在开发一个 ASP NET MVC 应用程序 它也有一些 angularJS 我有一个主页 其中有不同的选项卡 当您单击它们时 它们会加载角度部分视图 主页是这样的 div class widget div div class widg
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec
  • 无法让 Azure 缓存正常工作。 “暂时出现故障,请稍后重试。”

    那么 今天我 安装了azure SDK 2 1 并且 使用单个 WorkerRole 创建了一个新项目 使用 NuGet 获取缓存包 将角色的缓存设置为 并置 在 app config 中将主机设置为 WorkerRole1 评论安全部分
  • 如何缓存 ASP.NET 网站以获得更好的性能

    我是一名网页设计师 通常设计不需要更新的企业网站 所以我想将输出缓存一天 我怎样才能做到这一点 此外 任何有关在慢速服务器上提高 ASP NET 性能的建议都被接受 请注意 ASP NET 缓存有一个bug http connect mic

随机推荐