包容还是排他? Intel Core IvyBridge 处理器中的 L1、L2 缓存

2024-03-13

我有 Intel Core IvyBridge 处理器、Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz(L1-32KB、L2-256KB、L3-8MB)。我知道L3是包容性的,是多核共享的。我想了解有关我的系统的以下信息

PART1 :

  1. L1 是包含的还是排除的?
  2. L2 是包含的还是排除的?

PART2 :

如果 L1 和 L2 都包含,那么为了找到 L2 的访问时间,我们首先声明一个大小大于 L2 缓存(256KB)的数组(1MB),然后开始访问整个数组以加载到 L2 缓存中。之后,我们以 64B 的步长访问从起始索引到结束索引的数组元素,因为缓存行大小为 64B。为了获得更准确的结果,我们多次重复此过程(访问索引、起始位置处的数组元素),例如 100 万次并取平均值。

我的理解为什么这种方法给出正确的结果如下 - 当我们访问大小大于 L2 缓存大小的数组时,整个数组会从主存加载到 L3,然后从 L3 加载到 L2,然后从 L2 加载到 L1。整个数组的最后 32KB 位于 L1 中,因为它最近被访问过。由于包容性和缓存一致性,整个数组也存在于 L2 和 L3 缓存中。现在,当我开始从起始索引再次访问数组时,即not在L1缓存中,但在L2缓存中,因此会出现缓存未命中,并且将从L2缓存加载。这样,整个数组的所有元素都需要更高的访问时间,总共我将获得整个数组的总访问时间。为了获得单次访问,​​我将取总访问次数的平均值。

我的问题是 -我对么 ?

提前致谢 。


请参阅英特尔优化指南中的第 2.2.5 节 -
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-optimization-manual.pdf

(请注意,这适用于 Sandy-Bridge,但对于 Ivy-Bridge 来说似乎没有变化,与上一代相比,Ivy-Bridge 仅发生了微小的微架构变化)。

所以关于你的问题:

  1. 对于 L1 来说,不存在包容性问题,因为它没有上层缓存可供包容
  2. L2缓存是not包容性,这意味着不能保证驻留在 L1 中的线路也必须位于 L2 中。然而在大多数情况下它是likely在那里,因为它可能是在核心最初请求时被填充到 L2 中的,并且有很好的机会在 L2 中生存更长时间,因为它更大(因此驱逐可以更好地分布在更多组中),并且由 L1 过滤(通常意味着更少的驱逐)

另请注意,如果您的基准测试正在访问大于 L2 的数据集,则它可能无法位于 L2 中(特别是如果您连续访问它并超出 L2 超过单向的大小),并且您必须从 L3 获取它。

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

包容还是排他? Intel Core IvyBridge 处理器中的 L1、L2 缓存 的相关文章

  • GCC C++ (ARM) 和指向结构体字段的 const 指针

    假设有一个简单的测试代码 typedef struct int first int second int third type t define ADDRESS 0x12345678 define REGISTER type t ADDRE
  • Tensorflow 中的自定义资源

    由于某些原因 我需要为 Tensorflow 实现自定义资源 我试图从查找表实现中获得灵感 如果我理解得好的话 我需要实现3个TF操作 创建我的资源 资源的初始化 例如 在查找表的情况下填充哈希表 执行查找 查找 查询步骤 为了促进实施 我
  • 将处理后的图形绘制到另一个图形中

    我想将一个经过处理的图形绘制到另一个图形中 I have two graphics var gHead Graphics FromImage h var gBackground Graphics FromImage b Transform
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • ASP .NET MVC,创建类似路由配置的永久链接

    我需要帮助在 MVC 网站中创建类似 URL 路由的永久链接 Slug 已设置为 www xyz com profile slug 代码为 routes MapRoute name Profile url profile slug defa
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 如何检测 C# 中该字典键是否存在?

    我正在使用 Exchange Web 服务托管 API 和联系人数据 我有以下代码 即功能性的 但并不理想 foreach Contact c in contactList string openItemUrl https service
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • 与自己的班级交友“>>”

    我有以下课程 我与它交了朋友cout现在我正在尝试与它交朋友cin但我收到错误 任何人都可以帮助我 或者告诉我我做错了什么吗 error c mingw bin lib gcc mingw32 4 6 1 include c bits st
  • 是否有一个手势识别器可以同时处理捏合和平移?

    因此 我正在使用 iOS 4 2 向我的应用程序添加缩放和平移功能 我已经实现了 UIPinchGestureRecognizer 和 UIPanGestureRecognizer 的实例 在我看来 一次只有一个能够识别一个手势 特别是 后
  • 在 Rails 助手的类中使用 link_to

    我有一个使用下面结构的 Rails 助手 但是当我使用它时 我收到消息 undefined method link to 助手安排如下 module MyHelper class Facet def render for search li
  • Dalvik 正在寻找扩展名为“.0”的 .so 文件 - 为什么?

    我已经开始开发一个非常简单的 Android 应用程序 它由三部分组成 Java应用程序本身 一个预先构建的共享库 我们将其称为libfoo 另一个使用预构建库的共享库 我们将其称为libfoowrapper 文件系统看起来像这样 jni
  • PHP 条件取决于窗口宽度(媒体查询?)

    我有一个响应式网站 我需要一些 PHP 条件 具体取决于窗口宽度 或媒体查询 Example if window width gt 1400px echo Your window is wider than 1400px elseif wi
  • 将变量传递到新页面而不使用查询字符串

    有没有一种方法可以将变量从具有弹出 iframe 的 1 个页面传递到客户端按钮单击上的弹出窗口 iframe 而不使用查询字符串 我的变量太大而无法使用查询字符串 提出同样问题的另一种方式 有没有办法在客户端按钮单击时将变量从一个页面传递
  • 用 python 生成随机 ISO8601 日期?

    我已经看到如何从 ISO 格式的日期开始 例如2007 01 14T20 34 22 00 00 使用 python 转换为更具可读性的格式datetime 有没有一种简单的方法来生成随机 ISO8601 日期如同这个答案 https st
  • Cygwin 编译错误:“此应用程序已请求运行时以不寻常的方式终止它”

    我正在尝试运行 Cygwin 但遇到了一些问题 我尝试用 mingw 编译一个既可以在 Windows 上运行也可以在 Unix 系统上运行的程序 但是当我通过 Cygwin 编译它时 gcc threads c o threads 我收到
  • 使用 Sequelize 将多个参数安全地发送到 IN 子句以进行原始查询

    使用 Sequelize 我可以执行原始查询并安全地发送参数 感谢通过参数进行数据库绑定参数 const baz 1 sequelize query select from foo where bar baz replacements ba
  • 如何避免使用JPA注释循环引用?

    我正在为一家商店注释我的域模型 使用 JPA 2 使用 Hibernate Provider 商店里的每件产品都可以有一个Category 每个类别可以分配给多个超级类别和子类别 这意味着 蜡烛 类别可以将 餐厅 和 装饰 作为父类别 将
  • 在 Microsoft Visual Basic 6.0 中填充组合框

    我在 Microsoft Visual Basic 6 0 中有一个组合框 我必须将项目添加到组合框中 这些项目存储在 SQL 数据库中的 Column1 表中 我不确定如何让这些项目在运行时显示在组合框中 以便用户可以选择不同的选项 注
  • 从命令行查找目录中的文件

    在 eclipse 和 textmate 等编辑器 IDE 中 有一些快捷方式可以快速查找项目目录中的特定文件 是否有类似的工具可以在 bash 或其他 shell 中 递归地 对目录中的文件名进行完整路径补全 我的项目有很多目录 而且还有
  • 如何在java中对用户输入进行单元测试

    我试图了解如何测试用户的输入 请注意 我不是在尝试进行模拟测试 而是对实际用户输入的测试 目前 正如您在我的程序中看到的那样 我已经对测试用例的值进行了硬编码 并且它通过了所有测试 但是我如何获取用户的输入并对其进行测试 有没有一种方法可以
  • 如何从另一个模型引用 Django 模型

    我希望在管理面板中为一个测试程序创建一个视图 该程序记录书籍 出版商和作者 如 djangoproject com 我定义了以下两个模型 class Author models Model first name models CharFie
  • Applescript 和 iCal 交互

    我正在尝试编写一个 AppleScript 来查询 iCal 并查找任何日历中给定日期的所有事件 我首先编写一个简单的脚本 对给定日历中的每个事件执行一些简单的操作 tell application iCal tell calendar R
  • 在 React 中加载时隐藏移动浏览器的地址栏(IOS / Android)

    Safari and Chrome移动设备上的页面加载时都包含可见的地址栏 当页面主体滚动时 URL 栏最小化 我的项目基于ReactJS 和我试图在页面加载时实现这个结果 因此不需要用户交互 页面需要加载URL 栏最小化 我的网络应用程序
  • Bash:如何在 osx bash 中用新行替换字符串?

    我经常用谷歌搜索它 我只想要这一行 echo Replace
  • Google 地图 - 查找靠近我的路线的城市

    我想获得我所访问的所有城市的列表might在 A 点和 B 点之间经过 输入 A点为原点B点为目的地 Output A点和B点之间的路线 这是显而易见的 AND距离我的路线较近 X 英里的城市 城镇 地点的列表 我想向用户提供一个需要考虑的
  • RecordRTC:Ondataavailable 被调用两次。只有第一个文件正确,其他文件已损坏或太小[重复]

    这个问题在这里已经有答案了 我想以2秒的间隔记录本地和远程流并用Ajax上传到服务器 但问题是 ondataavailable 方法被调用了两次 因此同一个视频被上传到服务器两次 第一个视频可以正常播放 而其余视频要么已损坏 要么非常小 不
  • 包容还是排他? Intel Core IvyBridge 处理器中的 L1、L2 缓存

    我有 Intel Core IvyBridge 处理器 Intel R Core TM i7 3770 CPU 3 40GHz L1 32KB L2 256KB L3 8MB 我知道L3是包容性的 是多核共享的 我想了解有关我的系统的以下信