Execution Engine

译码后微指令队列IDQ(参看上图最右侧)将微指令流发送给流水线的分配/重命名(allocation/renaming)部件。乱序引擎共支持最多可达128条进行中微指令(micro-ops in flight)。每条微指令必须被分配以下资源:重排序缓冲区ROB中的一个条目,预约站RS中的一个条目,如果是访存操作,还必须要分配一个读取/存储缓冲区。

分配器(allocator)还会对进行中微指令进行寄存器重命名操作,即将x86寄存器重命名为程序员不可见的微架构寄存器。微指令的输入数据(即源操作数)通常来自于重排序缓冲区或者某个寄存器(指令退役后,计算结果保存在寄存器中)。

预约站扩展到了36个条目(上一代Core微架构是32个),可以在每个周期分发6条具备执行条件的微指令。微指令通过发射口发送到相应的执行单元簇中,每个执行簇可能包括整型/浮点/SIMD执行单元的集合。

执行单元执行的结果会被写回到寄存器堆中,或者通过旁路网络转发给某个需要使用这个结果做操作数的进行中指令。Intel Nehalem微架构支持每周期每(发射)端口回写寄存器堆中的一个寄存器。旁路网路由3种类型的域(domain)构成,分别是整型域,浮点域和SIMD域。在同类型的域内,处理器将生产者微指令的结果转发给消费者微指令是非常高效的,没有任何延迟。跨域转发结果则可能会产生额外的延迟,被称为旁路延迟。考虑到单个执行单元执行指令的延迟和吞吐量特征,软件有可能可以感知到旁路延迟带来的性能损失。下表是跨域转发导致的旁路延迟的以周期数度量的数据信息。

表:生产者微指令到消费者微指令的旁路延迟(以周期数计算)

生产者↓                                          消费者→

FP

Integer

SIMD

FP

0

2

2

Integer

2

0

1

SIMD

2

1

0

Issue Ports and Execution Units

下表列出了Intel Nehalem微架构中的发射口以及对应的执行单元在执行常用操作时的延迟/吞吐量信息。

Port

Exe. Ops

Latency

Throughput

Domain

Port 0

Integer ALU

Integer Shift

1

1

1

1

Integer

Port 0

Int. SIMD ALU

Int. SIMD Shuffle

1

1

1

1

SIMD

Port 0

SP FP MUL

DP FP MUL

FP MUL (x87)

FP/SIMD/SSE2 Move and Logic

FP Shuffle

DIV/SQRT

4

5

5

1

1

1

1

1

1

1

1

1

FP

Port 1

Integer ALU

Integer LEA

Integer MUL

1

1

3

1

1

1

Integer

Port 1

Int. SIMD MUL

Int. SIMD Shift

PSAD

StringCompare

1

1

3

3

1

1

1

1

SIMD

Port 1

FP ADD

3

1

FP

Port 2

Integer Loads

4

1

Integer

Port 3

Store Address

5

1

Integer

Port 4

Store Data

-

-

Integer

Port 5

Integer ALU

Integer Shift

JMP

1

1

1

1

1

1

Integer

Port 5

Int. SIMD ALU

Int. SIMD Shuffle

1

1

1

1

SIMD

Port 5

FP/SIMD/SSE2 Move and Logic

1

1

FP

Intel® Nehalem/Westmere架构/微架构/流水线 (4) - 执行引擎相关推荐

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

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

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

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

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

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

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

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

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

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

  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架构/微架构/流水线 (8) - 重复字符串指令增强

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

  9. Intel® Nehalem/Westmere架构/微架构/流水线 (7) - 存储转发增强

    Store Forwarding Enhancement 当一个读存操作紧跟在一个写存操作后,如果这两个操作访问同一个存储器地址,在符合转发条件的情况下,处理器可以直接将写存操作的数据发送给读存操作: ...

最新文章

  1. How Tomcat works — 四、tomcat启动(3)
  2. 图像偏色检测算法,速度快,效果好,共享给大家。
  3. Scala开发入门教程
  4. mysql嵌套实战_艰难的mysql嵌套表结果挑战
  5. 【多线程】1.条件变量--std::condition_variable
  6. python自建包的根目录可以直接import的方法
  7. Pytorch的网络结构可视化:Netron与TensorBoardX
  8. 这个耳机一点不输千元级的AirPods
  9. PDO连接MySql数据库
  10. 将普通文章内容替换为微信图文消息符合的内容
  11. vue img src 动态赋值_一个基于Vue的开源延迟加载插件——vuelazyload
  12. 服务器lnixs系统,Navicat for MySQL v12.1.19 强大的数据库管理和开发工具 _ 黑苹果乐园...
  13. java用下划线分开字母和数字_数字文字中的Java 7下划线
  14. win10升级助手_不用QQ也能电脑远程,win10这功能太良心了!真后悔晚发现
  15. 飞塔防火墙添加删除用户配置
  16. mysql 命令行操作
  17. mac系统怎么制作装系统的u盘?苹果电脑u盘启动盘制作教程
  18. 均衡负载集群(LBC)-1
  19. ev1527、pt2262等433/315MHZ芯片用stc单片机解码,含源程序
  20. 按键精灵---插件之后台发送字符串

热门文章

  1. 此次边路调整系统推荐射手走哪路_王者荣耀:S15射手最新梯度排行,马可T2,狄仁杰T1,T0仅剩两位...
  2. windows查看端口号占用
  3. Spark History Server配置及其启动
  4. MYSQL Too many connections错误的解决办法
  5. python中search和match的区别_Python中正则表达式match()、search()函数及match()和search()的区别详解...
  6. docker高级操作:使用-Dockerfile-定制镜像
  7. ajax编写前台的时候,列表显示部分,表格显示不出来,但是可以获取到数据
  8. pythonsqlalchemy怎么看到返回的具体内容_sqlalchemy返回值总结
  9. mac mongodb可视化工具_github项目推荐|2019 冠状病毒疫情爬虫。疫情数据可视化
  10. c++ 编译添加dll_Windows下osg编译