gpt4 book ai didi

assembly - Sandybridge 微架构中的堆栈引擎是什么?

转载 作者:行者123 更新时间:2023-12-02 08:20:47 25 4
gpt4 key购买 nike

我正在阅读http://www.realworldtech.com/sandy-bridge/我在理解一些问题时遇到了一些问题:

The dedicated stack pointer tracker is also present in Sandy Bridge and renames the stack pointer, eliminating serial dependencies and removing a number of uops.

实际上什么是专用堆栈指针跟踪器

For Sandy Bridge (and the P4), Intel still uses the term ROB. But it is critical to understand that, in this context, it only refers the status array for in-flight uops

这实际上意味着什么?请说清楚。

最佳答案

  1. 喜欢 Agner Fog's microarch doc explains ,堆栈引擎在管道的发出阶段(在将 uops 发出到核心的无序 (OoO) 部分)。

    因此,核心的 OoO 执行部分只需处理加载/存储部分,并使用堆栈引擎生成的地址。当 8 位位移计数器溢出时,或者当 OoO 内核直接需要 rsp 的值时(例如, sub rsp, 8callretpush< 后的 mov [rsp-8], eax/code> 或 pop 通常会导致在 Intel CPU 上插入额外的微指令。AMD CPU 显然不需要额外的同步微指令。

    请注意,Agner 的指令表显示 Pentium-M 及更高版本将 pop reg 解码为仅在加载端口上运行的单个微指令。但是 Pentium II/III 将 pop eax 解码为 2 uops; 1 个 ALU 和 1 个负载,因为没有堆栈引擎来处理乱序核心之外的 ESP 调整。除了占用额外的 uops 之外,一长串的入栈/弹出和调用/ret 还会创建对 ESP 的串行依赖,因此乱序执行必须先仔细研究 ALU uops,然后才能为 mov ebp, esp 提供可用值,或 mov eax, [esp+16] 的地址。

<小时/>
  • P6 微架构系列(PPro 到 Nehalem)将微指令的输入值直接存储在 ROB 中。在发出/重命名时,“冷”寄存器输入从架构寄存器文件读入 ROB(由于读取端口有限,这可能成为瓶颈。请参阅寄存器读取停顿)。执行完一个uop后,将结果写入ROB中,供其他uop读取。当 uops 退出时,架构寄存器文件将使用 ROB 中的值进行更新。

    SnB 系列微架构(和 P4)具有物理寄存器文件,因此 ROB 存储寄存器编号(即间接级别)而不是直接存储数据。对于 CPU 的这一部分来说,重新排序缓冲区仍然是一个很好的名字。

  • 请注意,SnB 引入了 AVX,具有 256b 个向量。与仅将它们保存在较小的 FP 寄存器文件中相比,使每个 ROB 条目足够大以存储双倍大小的向量可能是不可取的。

    SnB 简化了 uop 格式以节省功耗。但这确实导致了 uop 微融合能力的牺牲:解码器和 uop 缓存仍然可以使用 2 寄存器(索引)寻址模式微融合内存操作数,but they're "unlaminated" before issuing into the OOO core .

    关于assembly - Sandybridge 微架构中的堆栈引擎是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36631576/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com