使CPU的缓存失效

2024-02-06

当我的程序执行具有获取语义的加载操作/具有释放语义的存储操作或可能是完整栅栏时,它会使 CPU 的缓存无效。
我的问题是:缓存的哪一部分实际上失效了?只有保存我使用的获取/释放变量的缓存行?或者整个缓存都失效了? (L1 + L2 + L3 ..等等?)。当我使用获取/释放语义或使用全栅栏时,这个主题有什么不同吗?


当您在没有围栏或互斥体的情况下执行加载时,加载的值可能来自任何地方,即缓存、寄存器(通过编译器优化)或 RAM...但从您的问题来看,您已经知道这一点。

在大多数互斥体实现中,当您获取互斥体时,始终会显式(例如 mfence、barrier 等)或隐式(例如用于锁定 x86 上总线的锁定前缀)应用栅栏。这会导致路径上所有缓存的缓存行失效。

请注意,整个缓存并未失效,只是内存位置的相应缓存行失效。这还包括互斥体的行(通常作为内存中的值实现)。

当然,有一些特定于体系结构的细节,但这就是它的一般工作方式。

另请注意,这并不是使缓存失效的唯一原因,因为一个 CPU 上的某些操作可能需要使另一 CPU 上的缓存失效。在谷歌上搜索“缓存一致性协议”将为您提供有关此主题的大量信息。

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

使CPU的缓存失效 的相关文章

  • 如何在 Picasso 中使用磁盘缓存?

    我正在使用 Picasso 在我的 Android 应用程序中显示图像 load image This is within a activity so this context is activity public void loadIma
  • MVC 框架中的缓存策略?

    我编写了自己的小型 PHP MVC 框架 现在正在探索 PHP MVC 框架中的缓存策略 我正在考虑可以缓存什么 在哪里以及如何缓存 我的框架是简单的MVC框架 我有前端控制器 它启动应用程序 注册类自动加载 设置 php 运行时指令 最后
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动
  • 带缓存的简约 PHP 模板引擎,但不带 Smarty?

    有大量的问题 https stackoverflow com search q php template engine cache寻找 正确的 PHP 模板引擎 但它们都不专注于缓存 有谁知道一个轻量级 高质量 基于 PHP 5 的模板引擎
  • 如何找出英特尔处理器上的指令触及了哪条高速缓存线?

    我读了这篇文章关于 Meltdown Spectre 漏洞利用 http www theregister co uk 2018 01 04 intel amd arm cpu vulnerability 允许利用 CPU 中的硬件错误从内核
  • 用python控制风扇速度并检测电脑内部温度?

    由于我的电脑风扇噪音很大 我想为自己编写一个程序 在不需要全速运行时 关闭它 我想用python制作它 那么有没有任何模块可以检测温度和 或设置风扇速度 不要使用 python 或 WMI 如果您使用的是 Windows 并且无法使用 sp
  • prometheus中每个节点的CPU使用率

    理想情况下 我必须找出每个节点上 Pod 的 CPU 使用率百分比 但我试图找出每个节点的CPU使用率 我已经编写了查询 但它给了我超过 100 可以是 150 200 即使包含多个 cpu 的情况 我取了平均值 您能帮我理解下面的查询有什
  • Nodejs 异步函数是否使用所有 CPU 核心?

    如果我使用异步函数或带有回调的函数 例如本机 fs 模块 http 等 它们会默认在所有 cpu 核心上运行吗 或者整个系统只使用 1 个核心 Node js 中的一些异步操作 例如文件 I O fsmodule 将通过 libuv 中的线
  • 从 Java 内部限制 CPU

    我在这个 和其他 论坛中看到了许多具有相同标题的问题 但似乎没有一个问题能完全解决我的问题 就是这个 我有一个 JVM 它占用了托管它的机器上的所有 CPU 我想限制它 但是我不能依赖任何限制工具 技术external到 Java 因为我无
  • 无法使用 linux perf 对硬件缓存事件进行采样

    由于某种原因 我无法采样 perf record 硬件缓存事件 perf record e L1 dcache stores a c 100 sleep 5 perf record Woken up 1 times to write dat
  • 何时使用包含引用类型的值类型数组而不是引用类型数组?

    假设我有以下内容 public class MyElement Serializable StructLayout LayoutKind Sequential struct ArrayElement internal MyElement E
  • Blue Dragon Coldfusion 服务器缓存问题

    我有一个在 ColdFusion MVC 框架 Mach II 中构建的应用程序 并托管在蓝龙 ColdFusion 服务器上 它会导致缓存问题 当我添加一个包含一些内容的新页面并加载该页面时 它工作正常 但是 当我在同一个文件中进行一些更
  • 在apache中有条件地设置缓存头

    我想根据访问文件的路径有条件地设置缓存标头 基本上 访问http www example com cache cache key 应该为具有遥远未来缓存标头的文件提供服务 我使用重写规则来设置环境变量 然后尝试根据该变量设置缓存控制标头 然
  • 执行 SET {Key} 超时,inst: 0,mgr: Inactive,queue: 2, qu=1, qs=1, qc=0, wr=1/1, in=0/0

    我正在尝试使用 StackExchange Redis 客户端将 90 KB pdf 文件保存到 Azure Redis 缓存中 我已将该文件转换为字节数组并尝试使用 stringSet 方法保存它并收到错误 Code byte bytes
  • 如果没有过期的内容,Redis maxmemory-policy volatile-lru 是否会被驱逐?

    我有一个 redis 服务器 设置了maxmemory policy set to volatile lru 文档表明 当达到内存限制时 这将从设置过期的条目集中逐出 在这种情况下 redis 是否只驱逐过期的项目 如果内存中的所有内容都设
  • php 中的 cpu_get_usage ?

    我创建了一个基准类 允许用户插入例如 timer gt checkpoint 1 检查一些代码的时间 内存消耗等 如果她 他想测试它 她 他必须在代码末尾插入 result timer gt result 这会向公共函数 result 提供
  • 动态数据 Express.JS 的缓存控制

    如何建立一个缓存控制政策在快递 js关于 JSON 响应 我的 JSON 响应根本没有改变 所以我想积极缓存它 我找到了如何对静态文件进行缓存 但找不到如何对动态数据进行缓存 不优雅的方法是简单地添加一个调用res set 在任何 JSON
  • python中的StringIO实际用途是什么?

    StringIO到底是用来做什么的 我一直在互联网上寻找一些例子 然而 几乎所有的例子都非常抽象 他们只是展示 如何 使用它 但它们都没有表明 为什么 和 在什么情况下 应该 将使用它 附注不要与 stackoverflow 上的这个问题混
  • 如果 Redis 已经是堆栈的一部分,为什么 Memcached 仍然与 Redis 一起使用?

    Redis 可以执行 Memcached 提供的所有操作 LRU 缓存 项目过期以及现在版本 3 x 中的集群 目前处于测试阶段 或通过 twemproxy 等工具执行 性能也类似 此外 Redis 增加了持久性 因此您无需在服务器重新启动
  • 浏览器如何比较 URL 进行缓存?

    具体来说 URL 的哪些部分用于比较 假设我在以下位置提供 CSS 样式表https www example com a b test css具有适当的 HTTP 标头cache control max age等等 当用户稍后访问以下每个

随机推荐

  • 在 Maxima 列表中查找最大值和索引?

    我有一个 maxima 列表 例如 x 1 3 7 98 211 3 2 44 23 我需要找到列表的最大值以及最大值位于哪个位置 我唯一想到的是将列表重写为序列并应用 max 命令 max first x second x last x
  • 具有摊销 O(1) 删除和 O(log n) 搜索的数据结构

    我需要一个支持两种操作的数据结构 删除和搜索 现在 删除操作应该运行在摊销 O 1 时间 而搜索应该运行在O log n time 搜索操作应该如下工作 查找指定的值 如果它在这里 则返回值本身 否则 返回最接近的较大值 返回有序后继 这个
  • 具有输入数组的方法

    我想要一种方法 可以像 NSArray 一样放置所需数量的参数 id initWithObjects id firstObj NS REQUIRES NIL TERMINATION 然后我可以使用 NSArray array NSArray
  • 获取 Boto3 中具有特定标签和值的 EC2 实例列表

    如何使用标签和值过滤 AWS 实例boto3 import boto3 ec2 boto3 resource ec2 client boto3 client ec2 response client describe tags Filters
  • 找到svg形状的中心

    我在用着svgjs创造我的形状 如何找到 svg 形状的中心点并在那里添加元素 就我而言 是一个红点 我在文档中找不到任何有助于解决这种情况的方法或内容的信息 你可以使用该方法getBBox https docs webplatform o
  • 实体框架异常“底层提供程序在打开时失败”

    我创建了一个 Windows 服务 它侦听 TCP IP 端口并使用实体框架将接收到的数据保存在数据库中 大多数时候它工作正常 但有时会抛出异常 底层提供程序打开失败 在数据库中保存数据 这是我的异常详细信息 Exception 2 27
  • 如何在tf.data.Dataset.map()中使用Keras的predict_on_batch?

    我想找到一种使用 Keras 的方法predict on batch inside tf data Dataset map in TF2 0 假设我有一个 numpy 数据集 n data 10 5 my data np random ra
  • Ajax推送系统

    在我自己的系统中 我有一个PHP页面显示我通过在线网上商店出售的所有商品 从最新交易到第一笔交易 我希望每当人们从我这里购买东西时 此页面就会自动更新 我可以做AJAX打电话给每个5几秒钟来检查我数据库中的订单 但这似乎是 1980 年 或
  • 在 Windows 10 分配的访问权限中运行 Chrome kiosk 模式

    好消息是Windows 10分配访问支持运行桌面应用程序 Win 8 1仅支持运行通用应用程序 我想在命令行中使用 kiosk 运行 Chrome 的 kiosk 模式 本文底部有教程 https technet microsoft com
  • 处理单例实例 (C#)

    如果单例实现了 IDisposable 那么处置和重新创建实例的正确方法是什么 一种方法是保留 dispose 标志并在 Instance 属性中检查它 但我不确定这是执行此操作的正确方法 一个简单的例子 public sealed cla
  • 盲目地用代替可以吗?

    Note I know b 是展示性的并且 span style font weight none span b
  • 在 Mac OSX 下检测连接的 USB 设备

    首先声明 对于 Mac 编程 我是一个新手 然而 我有一项任务需要与设备进行 USB 通信 所以我想我将从基本的东西开始 我从here https developer apple com library mac samplecode USB
  • 如何在 moment.js 中获取月份的简称?

    我已成功找到月份的全名 但我想要月份的简称 谁能帮我 我正在使用 Moment js 我已成功找到月份 但我想要简短的形式这是我的代码 var date var Month moment date YYY MM DD format DD M
  • 在 magento 前端显示缺货状态

    我需要在产品页面 前端 上显示当前商品仅用于延期交货 并且没有库存 目前 我的库存显示了可用数量 而缺货的产品则没有显示任何内容 有谁知道我可以在 view phtml 文件中放入一个代码 该代码只会在那些设置为缺货的产品上显示一条消息 T
  • 我应该使用 Java 中的哪个线程池?

    有大量的任务 每个任务都属于一个组 要求是每组任务应该像在单线程中执行一样串行执行 并且在多核 或多CPU 环境中吞吐量应该最大化 注意 组的数量也与任务数量成正比 最简单的解决方案是使用 ThreadPoolExecutor 并同步 或锁
  • sklearn:关闭警告

    当我适合的时候sklearn s LogisticRegression使用 1 列 pythonpandas DataFrame not a Series对象 我收到此警告 Library Python 2 7 site packages
  • 设置一个二维数组,稍后更改大小 - C

    是否可以在 C 中声明一个二维数组 然后再设置其大小 我知道在 C 中你必须处理内存等问题 但尽管我进行了所有搜索 但我找不到这个问题的答案 我当前的例子是 int boardsize linewin char array 1 1 boar
  • .xib 中的 UITableView 没有内容属性

    XCode 4 2 iOS 5 为了重用表格视图 带有导航栏和编辑 添加按钮 我创建了一个UITableViewController拥有自己的子类 xib 但是 当我添加一个UITableView to my xib的主视图内容属性 我想将
  • 如何为单个 If 语句执行多个条件

    我试图在 vbscript 中的单个 If 语句上执行两个条件 应该很简单 但它不起作用 就像是 If Not fileName testFileName fileName lt gt Then Else 我用两个 if 语句来让它工作 但
  • 使CPU的缓存失效

    当我的程序执行具有获取语义的加载操作 具有释放语义的存储操作或可能是完整栅栏时 它会使 CPU 的缓存无效 我的问题是 缓存的哪一部分实际上失效了 只有保存我使用的获取 释放变量的缓存行 或者整个缓存都失效了 L1 L2 L3 等等 当我使
Powered by Hwhale