Loads and Stores

Pentium 4处理器采用以下技术来加速访存操作的执行:

  • 投机执行读存操作
  • 对于读存和写存操作,重排序读存操作
  • 允许多个缓存未中共存的情形(即无需等待上一个缓存未中解决,开始开始下一个读存操作)。有几个缓存行填充缓冲区,就允许有几个缓存未中共存。
  • 缓冲写存操作(也支持用来存储转发机制,参看下条)
  • 从写存操作中获取数据,转发给对应(同一地址)的读存操作

性能增强不可以超过内存访问带宽和处理器提供的缓冲区资源的限制。预约站的访存发射口(Port0:Store Data;Port3:Store Address;Port2:Load)可以在每个周期发射最多1条读存操作和1条写存操作。处理器中有48个读存缓冲区和24个写存缓冲区。只有当相应操作的缓冲区可用时,访存指令才能被分发到预约站。这些缓冲区会保存访存微指令及其操作地址信息,直到访存操作完成,微指令退役,然后会被回收供后续访存指令使用。

Pentium 4处理器被设计为允许访存操作乱序执行,既可以和其他指令一起参与乱序执行,多个访存操作之间也可以乱序执行。

读存操作可以投机执行,即,在前面的分支指令决断之前,通过分支预测机制“投机式地”读取数据。但是需要注意,投机读存操作不可以引发缺页异常(如果真的发生缺页,则不投机执行该条读存操作)。通过将多个读存操作重排序,可以避免某个读存操作未中导致后续读存操作停顿。将读存操作与其他的非同一地址的访存操作(读和写)一起重排序,可以进一步增强指令并行性,使得处理器可以更快的获得操作数据,开始执行更多的指令。

写存操作必须按照程序设计顺序执行,从而保证执行结果的正确性。

若读存操作时发生缓存未中,则需要向数据源(例如上级缓存或者存储器)请求数据。这种情形(outstanding load miss)并不会阻止其他的读存操作被发射执行并完成。换句话说,发生读操作缓存未中时,无需等待数据返回,即可开始执行下一条读存操作指令(假设指令执行资源都已具备)。Pentium 4处理器支持最多达4个读操作缓存未中的情形。

写存缓冲区使得处理器可以继续执行后续指令,无需等待某个写存操作完成存储器或缓存更新。这种机制可以提升处理器性能。对于(数据)依赖链而言,写存操作通常不在关键路径上,这样稍微延迟写操作,可以更有效的使用访存总线周期。

Store Forwarding

假设程序中某个写存操作位于读存操作之前,如果处理器预测到读操作与写操作的目标并不是同一个线性地址,则后面的读操作可以先执行。如果读写操作的目标是同一个地址,则读操作必须等待写操作的数据可用。但是有了存储转发机制,读操作无需等待到写操作的数据到达存储器层次结构中(即缓存或者存储器中)且写操作指令退役后,才能读取数据。只要如下的条件满足,写操作的数据可以直接转发给读操作:

  • 读写顺序:指令按照先写后读顺序,即要转发的数据是程序中前面的写存操作产生的,且写存指令已经执行(不必退役)
  • 数据长度:读取的数据必须是存储的数据的子集(包括真子集,即相同长度)。
  • 对齐方式:存储不能绕回缓存行边界,且要读取的线性地址必须与存储地址相同。

Pentium 4处理器架构/微架构/流水线 (11) - NetBurst执行核详解 - Load/Store操作/存储转发相关推荐

  1. Pentium 4处理器架构/微架构/流水线 (9) - NetBurst执行核详解 - 执行单元与发射口

    Execution Units and Issue Ports 每个时钟周期,执行核可能向4个发射口中的1个或多个口分发微指令.在微架构层面,存储操作进一步被分为两个部分:存储数据以及存储地址操作.下 ...

  2. Pentium 4处理器架构/微架构/流水线 (10) - NetBurst执行核详解 - 高速缓存/数据预取

    Caches Intel NetBurst微架构支持最多达3级的片上高速缓存.Pentium 4处理器上只实现了两级片上缓存结构,主要面向于桌面计算环境.最接近处理器执行核的缓存级,即一级缓存,包含独 ...

  3. Pentium 4处理器架构/微架构/流水线 (8) - NetBurst执行核详解 - 指令时延与吞吐量

    Execution Core Details 通过高效地处理常见的指令情形,执行核可以获得优化的整体性能.硬件被设计成尽可能快速地执行常见情形下常用的操作,当然,对于某些罕见的情形里不频繁执行的操作会 ...

  4. Pentium II Pentium III架构/微架构/流水线 (3) - P6执行核详解 (指令时延吞吐量,执行单元/发射口)

    Execution Core Detail 要想实现指令执行并行,就必须要知道各个执行单元的延迟信息.执行单元在流水线上的布局信息以及流水线上执行的微指令信息也很重要.本节会详细讲述执行核的操作,包括 ...

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

    Pentium 4 Architecture Overview 本节简要的介绍Pentium 4处理器的关键特性.这些特性提供了很好背景知识,用于理解详细的代码优化原则. Pentium 4处理器上用 ...

  6. Intel Core Solo/Duo处理器架构/微架构/流水线 - 前端/数据预取/SSE3

    Intel Core Solo/Duo处理器采用的微架构类似于Pentium M处理器的微架构,但是在性能和功能方面做了进一步的增强,主要包括: Intel智能缓存 – Intel Core Duo的 ...

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

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

  8. Intel Core Enhanced Core架构/微架构/流水线 (14) - 存储器/内存读写 Memory Load/Store

    Loads 当指令从回写类型的存储器中读取某个地址时,处理器会按照如下的规则从高速缓存或存储器中查找数据(确切的说是匹配地址): 发起核(即执行读存指令的处理器核)的一级数据缓存 其他核的一级数据缓存 ...

  9. MySQL系列---架构与SQL执行流程详解

    文章目录 1. 背景 2. 架构体系 2.1 架构图 2.2 模块详解 2.3 架构分层 3. 查询SQL语句执行流程 3.1 连接 3.1.1 MySQL支持的通信协议 3.1.2 通信方式 3.2 ...

最新文章

  1. C语言应用于LR中-如何得到数组长度
  2. 自制ACL+DHCP实验(初版)
  3. 说说如何使用unity Vs来进行断点调试
  4. diag--创建对角矩阵
  5. 八数码c语言编程深度搜索,广度优先搜索解 八数码, 求意见, 求bug/
  6. Android自定义属性:format选项之reference
  7. Doris之数据模型的选择建议
  8. 开源的仿真软件HOPSAN
  9. 解析GitHub首页3D动画
  10. Html转Word解决转存图片时候的跨域问题、默认打开视图问题
  11. 51job导出的简历是php,前程无忧简历导出
  12. 软件测试课程设计——智云云盘
  13. 区块链入门教程(8)--WeBASE-Front节点前置服务
  14. NEXTCHIP 内容介绍+应用场景+代理商信息
  15. matlab图像区域填充的原理_MATLAB中怎么用fill填充指定区域?
  16. R语言逻辑操作符:、|、!、||
  17. Riak - 安装运维篇(1)
  18. 苹果以旧换新活动_苹果悄悄下调了设备回收价格 但影响大吗
  19. css实现序列帧闪电动效
  20. Ubuntu 搭建FTP文件服务器

热门文章

  1. 设计模式笔记十四:责任链模式
  2. uniapp使用android studio进行调试的配置
  3. 局域网网管软件_局域网安全管理面临的4大挑战
  4. ReferenceError: XXX is not defined 错误及解决办法
  5. 文件管理器android开源,寻找优秀的安卓文件管理器 五款文件管理器大评比
  6. python椭圆识别_Python+pillow计算椭圆图形几何中心
  7. 打印五行五列的直角三角形
  8. 计算机研究与发展 杂志,《计算机研究与发展》杂志投稿的具体要求详解
  9. python中openpyxl的使用
  10. github 上 thoes更新了 找不到bootstrap.sh_因为这个工具,我在 GitHub 搜索源码的时间缩短了 50%!...