Execution Core Detail

要想实现指令执行并行,就必须要知道各个执行单元的延迟信息。执行单元在流水线上的布局信息以及流水线上执行的微指令信息也很重要。本节会详细讲述执行核的操作,包括对指令的延迟与吞吐量,执行单元/端口,高速缓存,以及存储缓冲区的讨论。

Instruction Latency and Throughput

当微指令到达预约站后,通过对微指令重排序,以便于取得指令需要的操作数和执行单元,这样可以获得更好的执行并行性。了解指令的延迟信息可以更好的安排指令调度。某些执行单元没有流水线化,例如浮点单元,因此微指令不能在每个时钟周期连续地分发到执行单元,所以达不到每个周期1条指令的吞吐量。下表列出了Pentium II和III处理器的执行单元,以及它们的延迟和发射吞吐量。

Port

Execution Units

Latency/Throughput

0

Integer ALU Unit

LEA instructions

Shift instructions

Integer Multiplication instruction

Latency: 1, Throughput 1/cycle

Latency: 1, Throughput 1/cycle

Latency: 1, Throughput 1/cycle

Latency: 4, Throughput 1/cycle

Floating-Point Unit:

FADD instruction

FMUL instruction

FDIV instruction

Latency 3, Throughput 1/cycle (horizontal align with FADD)

Latency 5, Throughput 1/2cycle1 (aligh with FMULL)

Latency: single-precision 18 cycles, double-precision 32 cycles, extended-precision 38 cycles. Throughput non-pipelined (align with FDIV)

MMX Technology Unit:

MMX™ ALU Unit

MMX Multiplier Unit

Latency 1, Throughput 1/cycle

Latency 3, Throughput 1/cycle

Streaming SIMD Extensions (SSE)

FPU: Multiply, Divide, Square Root, Move instructions

参考Intel文档Order#: 245127-001

1

Integer ALU Unit

Latency 1, Throughput 1/cycle

MMX ALU Unit

MMX Shift Unit

Latency 1, Throughput 1/cycle

Latency 1, Throughput 1/cycle

SSE: Adder, Reciprocal and Reciprocal Square Root, Shuffle/Move instructions

参考Intel文档Order#: 245127-001

2

Load Unit

SSE: Load instructions

Latency 3 on a cache hit, Throughput 1/cycle

参考Intel文档Order#: 245127-001

3

Store Address Unit

SSE: Store instruction

Latency 0 or 3 (not on critical path), Throughput 1/cycle2

参考Intel文档Order#: 245127-001

4

Store Data Unit

SSE: Store instruction

Latency 1, Throughput 1/cycle

参考Intel文档Order#: 245127-001

注1:当接受第一个FMUL指令后,FMUL单元不能在下一个时钟周期内接受第二个FMUL指令。这与只能在偶数周期内执行FMUL指令不同。FMUL是流水线化的,但是是每两个时钟周期。

注2:某个地址上的读操作,如果可以从对该地址上的写操作中直接获取数据,则读操作可以与写操作在同一个时钟周期内分发,从这种意义上讲,写操作的延迟是0。写操作本身需要3个周期完成,但是这个延迟只影响一个存储缓冲区条目多快可以被释放从而被另一条微指令使用。

Execution Units and Ports

每个时钟周期内,执行核可以分发0个或1个微指令到每个流水线端口,由于有5个端口,所以最多可达每个周期5条微指令的最大分发吞吐量。每个流水线端口后面有若干执行单元。微指令根据所执行的操作类型被分发到对应的流水线单元中。例如,整型算逻单元和浮点单元(加法器,乘法器和除法器)共享一条流水线。掌握哪些微指令会在同一条流水线上执行,对合理安排指令顺序避免资源冲突非常有帮助。

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

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

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

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

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

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

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

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

    Loads and Stores Pentium 4处理器采用以下技术来加速访存操作的执行: 投机执行读存操作 对于读存和写存操作,重排序读存操作 允许多个缓存未中共存的情形(即无需等待上一个缓存未中 ...

  5. Pentium II Pentium III架构/微架构/流水线 (7) - 微架构框图

    Pentium II的微架构 下面这幅图来自于CSE 3322-001 (Fall 1999),在Mindshare的Pentium Pro体系结构一书中也有类似的图. 注意:Pentium II处理 ...

  6. Pentium II Pentium III架构/微架构/流水线 (4) - P6详解 - 高速缓存/Store Buffers

    Caches of the Pentium II &I III Processors Pentium II & III处理器的片上高速缓存子系统由2个16K字节的4路组相联高速缓存组成 ...

  7. Pentium M处理器架构/微架构/流水线 (2) - 数据预取/乱序核/退役单元

    Data Prefetching Intel Pentium M处理器支持3种预取机制: 第一种是硬件指令预取,已在上面章节中讲述 第二种是自动的将数据预取到二级缓存.这个机制基本上与Intel Ne ...

  8. Intel Core Enhanced Core架构/微架构/流水线 (8) - 执行核

    Execution Core Intel Core微架构的执行核是超标量的,且可以乱序处理指令.注意:这里没有使用乱序执行指令,用的是乱序处理指令."处理"在这里包括对指令的寄存器 ...

  9. 从Java程序员进阶到架构师,6大核心技能要领详解

    " java架构师技能将分为如下6大环节:数据结构和算法,Java高级特性,Java web核心,数据库,Java框架与必备工具,系统架构设计. 希望能真正帮助到从程序员进阶到架构师之路的朋 ...

最新文章

  1. dev treeview控件_在Winform开发框架中使用DevExpress的TreeList和TreeListLookupEdit控件
  2. php鼠标已入移除,angularjs鼠标移入移出实现显示隐藏
  3. ubuntu g++编译32位应用
  4. Maven多工程的创建
  5. 华为将联合京东举办线上发布会 或发布折叠屏手机
  6. C#.Net工作笔记003---异步编程async await
  7. Swift中的数据存储
  8. 考研复习(2)链表操作
  9. 10 Java 常见的加密方式
  10. Unity实现简单卡牌游戏框架
  11. 有盘和无盘服务器,网吧系统的终极解决之道:无盘系统+有盘(转)
  12. 干货收藏!如何绘制产品流程图
  13. raid(磁盘阵列)
  14. Mystery——团队作业——系统设计
  15. keras使用LSTM生成文本
  16. 机器人工程专业简介与开设高校名单详细完整版(2019年4月更新-专业代码:080803T)
  17. 机器学习-周志华-课后习题答案-线性模型
  18. bzoj2754【SCOI2012】喵星球上的点名
  19. Oracle数据库迁移postgreSQL
  20. webinspect安全扫描

热门文章

  1. 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真
  2. 带权的活动选择_操作系统 复习要点+习题-2016
  3. 【mysql基础知识】查询当前时间之前5分钟内的数据
  4. 如何判断链表有环并计算环的长度
  5. day23 java的异常
  6. android socket 代理服务器,Android 使用Socket进行服务器通信
  7. h2 不能访问localhost,SpringBoot访问H2控制台
  8. centos安装mysql初始化没有密码_centos 6 初次安装mysql 的密码初始化登陆问题
  9. xposed hook java_[原创]Android Hook 系列教程(一) Xposed Hook 原理分析
  10. 在数组中查找指定元素_JavaScript之学underscore在数组中查找指定元素