如何预取不常用的代码?

2023-11-26

我想将一些代码预取到指令缓存中。代码路径很少使用,但我需要它位于指令缓存中,或者至少在 L2 中(在极少数情况下)。我对这些罕见的情况有一些提前通知。 _mm_prefetch 对代码有用吗?有没有办法将这些不常用的代码放入缓存中?对于这个问题,我不关心可移植性,所以即使 asm 也可以。


答案取决于您的 CPU 架构。

也就是说,如果您使用 gcc 或 clang,则可以使用__builtin_prefetch指令尝试生成预取指令。在 Pentium 3 和更高版本的 x86 类型架构上,这将生成PREFETCHh指令,请求加载到数据缓存层次结构中。由于这些架构具有统一的 L2 和更高级别的缓存,因此可能会有所帮助。

该函数如下所示:

__builtin_prefetch(const void *address, int locality);

The locality参数应在 0...3 范围内。假设locality直接映射到h的一部分PREFETCHh指令,您想要传递 1 或 2,这要求将数据加载到 L2 和更高级别的缓存中。看英特尔® 64 和 IA-32 架构软件开发人员手册 第 2B 卷:指令集参考,M-Z (PDF)第 4-277 页。 (在这里查找其他卷.)

如果您使用的另一个编译器没有__builtin_prefetch,看看是否有_mm_prefetch功能。您可能需要包含头文件才能获取该函数。例如,在 OS X 上,该函数以及常量locality参数,声明于xmmintrin.h.

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

如何预取不常用的代码? 的相关文章

  • 数据模板绑定垃圾邮件输出窗口出现错误:找不到管理 FrameworkElemen

    我有问题 System Windows Data 错误 2 找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement BindingExpression 无路径 数据项 空 目标元素是 So
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • gem install therubyracer -v 0.11.4 在 OS X 10.10 上失败

    按照此处的步骤操作osx mavericks 上的 gem install therubyracer v 0 10 2 未安装 我能够正常安装 therubyracer v 0 10 2 和 0 12 0 但不能安装 0 11 4 gem
  • 如何在 Android 中同时录制 2 个麦克风?

    我试图同时记录来自 2 个内置麦克风 底部 顶部 的音频信号 我可以使用拾取底部麦克风信号 MediaRecorder AudioSource MIC 和顶部麦克风信号使用 MediaRecorder AudioSource CAMCORD
  • 如何在运行时更改 Play 2 Framework DB 配置?

    我们正在使用 Play 2 1 1 及其内置 JPA 集成 JPA em ETC 我们如何动态更改 db pass 属性 Play application configuration 似乎 从 Play 2 1 开始是不可变的 或者我们至少
  • 如何在 Windows 上从源 tarball 安装 R 包?

    The 预测包 for R已经更新到版本2 12 但目前 CRAN 上仅提供 2 11 的 Windows 二进制文件 如何安装 R 包来源在 Windows 上 我知道这是一个老问题 但它在我的谷歌搜索中首先出现在同一问题上 尽管我知道答
  • 使用ajax分页加载页面后重新初始化其他javascript函数

    抱歉 这里完全是新手 如何加载其他插件 并在加载 ajax 生成的页面后让其他单独的脚本运行 这是我当前的代码 jQuery document ready function var mainContent load content site
  • HIbernate 映射异常:PropertyNotFoundException:找不到设置器

    我有两个 POJO STOCK 和 STOCK DETAILS 一对多关系 我还有一个接口 IAUDITLOG 有两种方法 我需要用两个 POJO 来实现这个接口 并且想在这些方法中编写一些实现 但是 当我使用子类 STOCKDETAILS
  • 将php数组插入mysql

    我有一个数组 product array 当我使用 print r product array 时 数组显示如下 Array 0 gt Array ID gt P00100 NAME gt Edina PRICE gt 20 00 1 gt
  • SQLAlchemy 联合括号问题

    我需要生成类似于以下内容的查询 select from where and order by limit union all select from where and order by limit order by 使用 SQLAlche
  • 无法在 webRTC 上下文中从 Android webView(chrome 框架)访问相机

    应用程序基于 webRTC 与 websocket Android Studio 2 3 2 最新版本 我已经使用 https 协议 自动播放 android 版本 7 0 最低 gt android 5 0 应用程序适用于所有支持的浏览器
  • symfony2 - 从数据库添加选择

    我希望使用自定义查询中的值填充 symfony2 中的选择框 我已经尝试尽可能地简化 控制器 class PageController extends Controller public function indexAction field
  • 如何检查滚动当前在 WPF DataGrid 中是否可见?

    如何检查 WPF DataGrid 当前是否显示滚动 垂直或水平 Horizo ntalScrollBarVisibility 和 VerticalScrollBarVisibility 用于设置行为 并将它们设置为 Auto Scroll
  • 流量管理器 + azure 网站:如何配置自定义 dns ssl

    我有一个自定义 DNS 条目通过 CNAME 记录映射到我的流量管理器设置 我还有指向我的 azure 网站端点的流量管理器 并且我有一个与我的网站上上传的自定义 DNS 相匹配的通配符证书 我在使用 ssl 时遇到问题 该文档不清楚如何在
  • 对 WinMain@16(代码块)的未定义引用

    当我编译 secrypt cpp 程序时 我的编译器显示错误 undefined reference to WinMain 16 我的代码如下 加密 h ifndef SECRYPT H define SECRYPT H void jReg
  • Java GUI显示网页并返回HTML

    我需要如下的工作流程 load xyz com in the browser window the browser is live meaning users can interact with it browser load http w
  • 在带有泛型参数的泛型方法中使用 Spring RestTemplate

    要将泛型类型与 Spring RestTemplate 一起使用 我们需要使用ParameterizedTypeReference 无法获取通用 ResponseEntity 其中 T 是通用类 SomeClass 假设我有一些课 publ
  • 为什么 git 将某些 cpp 文件视为二进制文件?

    这是输出git log 5a831fdb34f05edd62321d1193a96b8f96486d69 HEAD HEAD origin work work LIB xxx cpp Bin 592994 gt 593572 bytes L
  • 让 Jenkins 通过 Mercurial 提交构建项目

    有没有办法在单个存储库中指定挂钩 现在我们已经在 etc mercurial hgrc 文件中指定了钩子 但每次它都会构建两次 并且它会为每个存储库中的每次提交构建 所以我们想为每个存储库指定一个构建 这就是我们实现钩子的方式 hooks
  • 在 Android 密钥库中安全存储密钥

    我正在制作一个与服务器通信的 Android 应用程序 我在服务器上使用基于令牌的身份验证 并将信息从服务器传递到客户端 我使用非对称加密 整个过程是这样的 生成的公钥和私钥事先已经存在 公钥用于加密信息 然后从服务器传递到客户端 App使
  • Android——有没有办法将吐司旋转90度?

    想不出更多的信息可以提供 有办法吗 As hackbod也就是说 您必须有一个自定义视图来显示 toast 我为您找到了一些可以为您旋转标签的类 VerticalLabelView and CustomTextView 我选择使用后者 并让
  • 如何预取不常用的代码?

    我想将一些代码预取到指令缓存中 代码路径很少使用 但我需要它位于指令缓存中 或者至少在 L2 中 在极少数情况下 我对这些罕见的情况有一些提前通知 mm prefetch 对代码有用吗 有没有办法将这些不常用的代码放入缓存中 对于这个问题