Store Forwarding Enhancement

当一个读存操作紧跟在一个写存操作后,如果这两个操作访问同一个存储器地址,在符合转发条件的情况下,处理器可以直接将写存操作的数据发送给读存操作;这样就不必等待数据写入到存储器(包括高速缓存)之后再从存储器(包括高速缓存)中读取数据。这种行为被称为存储读取转发操作,简称为存储转发,可以大大节省读存操作获取数据的延迟周期数。

要想实施无延迟的存储转发,必须要满足一些条件:

  • 要转发的存储数据必须是读存操作之前的最后一条写存操作
  • 写存操作要存储的数据长度必须大于等于读存操作要读取的数据长度
  • 要读取的数据必须完全包含在写存操作的数据中

注:我觉得满足第三条条件的话,就没必要再说第二条了。

根据写存操作与读存操作中不同的地址对齐方式以及操作数长度,可以确定1)或者可以实行存储转发操作,2)或者是无法转发,不得不通过高速缓存/存储器子系统进行写/读操作,从而遭受性能延迟。45纳米的Enhanced Intel Core微架构相比前一代Intel Core微架构放松了转发条件,允许更加灵活的地址对齐方式和操作数长度要求。Intel Nehalem微架构进一步放松了转发条件,允许在更多的场景下进行快速的转发。

下图是16字节的存储操作存储转发条件,同时标出了Nehalem微架构做的增强。

Intel Nehalem微架构可以无视存储地址的对齐方式进行存储转发操作。下图是8字节或更少字节的存储操作可以转发的情形。

Intel® Nehalem/Westmere架构/微架构/流水线 (7) - 存储转发增强相关推荐

  1. Intel® Nehalem/Westmere架构/微架构/流水线 (1) - 特性概述

    Intel® Nehalem/Westmere Microarchitecture Intel Nehalem微架构的全称是Intel Microarchitecture code name Neha ...

  2. Intel(R) 处理器产品架构/微架构对照表

    Intel(R) 处理器与微架构对照表 2020/12/23:更新至IceLake/TigerLake微架构 2019/07/09:更新至 2nd Generation Intel® Xeon® Sc ...

  3. Pentium M处理器架构/微架构/流水线(1) - 流水线概述

    Intel® Pentium® M Processor 与Intel NetBurst微架构类似,Intel Pentium M处理器微架构 的流水线也包括3个主要部分: 有序发射前端 乱序超标量执行 ...

  4. Intel® Nehalem/Westmere架构/微架构/流水线 (5) - 高速缓存 存储器子系统

    Cache and Memory Subsystem Intel Nehalem微架构的每个处理器核包括一个一级指令高速缓存,一个一级数据高速缓存,以及一个二级混和式(指令与数据)高速缓存.单个物理处 ...

  5. Intel® Nehalem/Westmere架构/微架构/流水线 (4) - 执行引擎

    Execution Engine 译码后微指令队列IDQ(参看上图最右侧)将微指令流发送给流水线的分配/重命名(allocation/renaming)部件.乱序引擎共支持最多可达128条进行中微指令 ...

  6. Intel® Nehalem/Westmere架构/微架构/流水线 (3) - 流水线前端

    Front End Overview 下图展示了Nehalem微架构流水线前端的主要构成组件.取指单元IFU每个周期可以从一级指令缓存中读取16字节的对齐指令流,然后将其送到指令长度译码器ILD中.指 ...

  7. Intel® Nehalem/Westmere架构/微架构/流水线 (2) - 流水线概述

    Microarchitecture Pipeline Intel Nehalem微架构延续了65nm制程的Intel Core微架构上的4宽度流水线.下图是在Intel Core i7处理器上采用的N ...

  8. Intel® Nehalem/Westmere架构/微架构/流水线 (9) - 系统软件增强/能耗增强

    Enhancements for System Software Intel Nehalem微架构对硬件的增强,大部分同时让应用程序和系统软件收益,除此以外,还有一些增强主要服务于系统软件. 锁原语( ...

  9. Intel® Nehalem/Westmere架构/微架构/流水线 (8) - 重复字符串指令增强

    REP String Enhancement REP指令前缀与MOVS/STOS指令连用以及寄存器ECX的值做计数器,这种组合常常用于实现类似于memcpy()/memset()这样的库函数,被称为& ...

最新文章

  1. 《C++ Primer Plus》第8章 函数探幽 学习笔记
  2. 快手,字节面试题,将IP地址转换成整数类型,再转换回来。C++代码
  3. java怎么编写软键盘_安卓手机软键盘操作
  4. Mysql配置优化浅谈
  5. 大道至简第四章阅读笔记
  6. button的格式的问题
  7. Win11延迟高怎么办?Win11延迟高的解决方法
  8. 虚拟化--001 view win7优化
  9. 程序员有了孩子,老大叫玲玲,老二叫玲依,老三叫...
  10. 编程基本功:带着本子却不记录,你以为听懂了记住了,不可能的
  11. 论文阅读|Openpose
  12. python爬取贴吧数据_【python】利用requests爬取百度贴吧用户信息
  13. 汉王手写板linux驱动下载,汉王科教手写板易教2.0驱动
  14. 大数据SQL中的Join【谓词下推】讲解
  15. 使用itext到处PDF,使用PDF模板导出PDF文件
  16. 数字证书和SSL的学习
  17. HTML播放器快进不显示进度条,MediaSource播放视频,快进(直接点击进度条)的时候怎么知道range范围呢...
  18. Web中间件常见安全漏洞
  19. 复杂多边形的三角剖分
  20. 在家享受专业跑道,安全跑步高效健身,华为智选赤兔跑步机H1体验

热门文章

  1. vb combox获取选定index_Python-新闻评论获取
  2. Spark优化一则 - 减少Shuffle
  3. 如何使用IntelliJ IDEA搭建spark开发环境(上)
  4. JS兼容问题的函数封装文档
  5. android动画能超过父容器吗,Android中你不得不知道的动画知识 (一)
  6. android 本地日历,Android日历提供商:如何删除自己的本地日历?
  7. 实现粗糙表面_什么是表面粗糙度,你真懂吗?
  8. mysql批量添加报错_技术分享 | MySQL 在批量插入时捕捉错误信息
  9. python不同时间周期k线_请问期货不同时间级别的k线呈现相反形态怎么判断买卖点?...
  10. 用python可以解决什么问题_学 Python 能帮你解决什么问题 ?