PREFETCHn Instructions

PREFETCHn指令使得程序可以提前让处理器预先即将访问的数据读入到指定的某级缓存中,这样当程序真正需要这些数据时,可以直接命中缓存。这些指令按照制定了时效局部性提示(temporal locality hint)读取对齐的32字节的数据行(或者更长的数据行,依赖于处理器实现),这个数据行包括了指令中指定的数据。详情可参看下表。

指令助记符

指令操作

PREFETCHT0

格式:PREFETCH0 m8

使用T0提示,将m8指定的数据行(至少32字节)预取到所有级别缓存中,这里T0提示表明:数据是时效性的

PREFETCHT1

格式:PREFETCH1 m8

使用T1提示,将m8指定的数据行(至少32字节)预取到第二级和更高级别缓存中,这里T1提示表明:数据是时效性的,但是L1 Cache未中

PREFETCHT2

格式:PREFETCHT2 m8

使用T2提示,将m8指定的数据行(至少32字节)预取到第三级和更高级别缓存中,这里T2提示表明:数据是时效性的,但是L2 Cache未中

PREFETCHNTA

格式:PREFETCHNTA m8

使用NTA提示,将m8指定的数据行预取到非时效缓存结构中,使之接近处理器,同时将缓存污染最小化

Intel C/C++ Compiler Intrinsic Equivalent
void _mm_prefetch(char *p, int i)

指针p指定了要预取的字节(以及相应的数据行),整数i指定了时效局部性提示。

_MM_HINT_T0,

_MM_HINT_T1,

_MM_HINT_T2,

_MM_HINT_NTA

SFENCE Instruction

SFENCE (store fence),存储屏障指令通过创建内存存储操作之间的屏障来控制写存顺序。这条指令保障了该指令之前的所有写操作结果可以被该指令之后的所有指令所见。SFENCE指令提供了一种有效的方法,用于确保生成弱排序数据的生产者与使用这些数据的消费者之间的顺序。如下例,只有两条写存指令完成后,处理器才会继续执行后续指令A与B。当然,处理器性能上也会有所损失。

Write_memory1

Write_memory2

SFENCE

InstructionA

instructionB

格式:SFENCE

ntel C/C++ Compiler Intrinsic Equivalent
void _mm_sfence(void)

Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(12) - 预取指令与SFENCE指令相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  2. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(9) - 64位整型指令(MMX指令集扩展)

    SSE 64-Bit SIMD Integer Instructions SSE扩展增加了几条64位组合的整型指令,这些指令操作MMX寄存器和64位的存储器操作数,这些指令可以看作是对MMX指令集的扩 ...

  3. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(6) - 逻辑指令 比较指令

    SSE Logical Instructions SSE的逻辑指令执行与,或,非,以及与非操作.操作数是组合的单精度浮点数. 指令 描述 ANDPS 格式:xmm1, xmm2/m128 对操作数执行 ...

  4. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(4) - 数据传输指令

    SSE Instruction Set SSE指令集大致可以分为4个功能组: 组合的与标量的单精度浮点指令 数据传输指令 算术指令 逻辑指令 比较指令 混洗shuffle指令 转换指令 64位SIMD ...

  5. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(2) - SSE程序设计环境概述

    SSE Programming Environment 下图是IA-32处理器上的SSE程序设计环境,所有的SSE指令操作XMM寄存器,MMX寄存器,和/或存储器. XMM寄存器,8个,128位宽,存 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(13/E) - FXSAVE/FXRSTOR指令

    FXSAVE and FXRSTOR instructions FXSAVE与FXRSTOR指令是从Pentium II处理器引入到IA-32架构上的,早于SSE指令集的引入.这两条指令的最初版本是用 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(7) - 混洗指令 解组合指令

    SSE Shuffle and Unpack Instructions SSE的混洗指令与解组合指令混洗shuffle或交错interleave单精度浮点操作数,并将结果保存到目标操作数. 指令 描述 ...

  8. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(3) - MXCSR寄存器详解

    MXCSR Control and Status Register 32位宽的MXCSR寄存器(参看下图)包含了控制与状态标志位,适用于SSE,SSE2和SSE3 SIMD浮点操作.这些标志位包括: ...

  9. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令

    Cacheability Control Instructions 下面的3条指令允许使用"非时效存储提示non-tempral hint"将MMX/XMM寄存器中的数据写入到存储 ...

最新文章

  1. 怎么样给下拉框加载背景色
  2. JAVA入门级教学之(定义一个学生类)
  3. Bootstrap-select使用说明
  4. 苹果编程套餐更新,新增创意课程,十一拿起吃灰的iPad学起来!
  5. js中的数据转换、整数、小数保存、四舍五入
  6. win10python安装失败_python3.6 + win10 安装 python-Levenshtein 错误记录
  7. 微服务链路追踪_微服务的战争:选型?分布式链路追踪
  8. API接口文档范文-API接口文档示例
  9. 手把手教你Excel数据处理!
  10. 注册google账号,当前时间方法仍可用
  11. PLS-00103: Encountered the symbol “DECLARE“
  12. linux 机器无法访问网络
  13. BICEP单元测试计划——四则运算Ⅱ
  14. 如何用手机在图片上标箭头_如何在手机上快速给图片做标记?
  15. 玻纤效应对skew的影响(一)
  16. 论文模型构建的步骤_Deep Learning of Graph Matching论文解读
  17. VS-Code的使用
  18. 数通--交互技术--STP+RSTP详解
  19. vscode美化插件推荐
  20. 关于电脑连接好WiFi却无法使用浏览器上网的一种解决方法

热门文章

  1. while用法_when 和 while 的用法区别
  2. java面向对象的理解_java胜于C语言,却又静态面向对象,简单?
  3. Python练习:合格率的计算
  4. day20 java的String
  5. .net mysql 多线程_.Net多线程问题总结
  6. python game_Python游戏
  7. java 内部类 作用_java内部类的作用分析
  8. 三星计算机用户的密码忘了,如果三星计算机忘记了开机密码怎么办
  9. 微服务主见传递ID还是json_后台管理系统之微服务搭建
  10. 树形结构递归_递归和匿名函数