gpt4 book ai didi

hardware - 了解 Tomasulo 算法

转载 作者:行者123 更新时间:2023-12-02 20:14:24 27 4
gpt4 key购买 nike

所以我试图理解乱序指令执行的 Tomasulo 算法。这是我到目前为止所得到的:

  • 指令按顺序获取并存储在指令队列中。

  • 接下来会发生寄存器重命名...?据我了解,这是为了通过给寄存器添加标签来避免 WAR/WAW 危险。说你有添加 r1,r2,r3 (1)添加 r3,r5,r6 (2)您存在 WAR 危险,需要确保指令 (1) 在将 r3 添加到 r1 之前读取它的旧值。所以我猜想在指令队列(?)中硬件重命名了寄存器,即添加r1,r2,r3#1添加r3#2,r5,r6或类似的东西。

  • 向预订站发出指令。据我了解,每个功能单元都有自己的一套预留站。但是,当公共(public)数据总线上有适当标记的操作数可用时,它是否类似于功能单元执行的指令队列(FIFO)?

  • 由于指令可以按任意顺序(无序)完成,并且更多指令可以不断出现...是否存在公共(public)数据总线在更多指令进入之前更新寄存器文件的阶段?我听说使用了重新排序缓冲区,它基本上将指令按顺序排序(这必须意味着指令具有某种标签),然后将寄存器结果提交回寄存器文件。

我感到困惑的是寄存器重命名的实现以及保留站的结构。

感谢您的帮助。

最佳答案

Tomasulo 的算法实际上并不依赖于任何特定的硬件,事实上,在真实的机器中,寄存器重命名通常发生在指令插入指令队列之前。让我们来了解几个基本点。首先,程序中表示的寄存器是逻辑寄存器。其次,实际的硬件寄存器称为物理寄存器。 Tomasulo 的算法只是一种将逻辑寄存器映射到物理寄存器的机制。在真实的机器中,一般有两张表将逻辑寄存器映射到物理寄存器。一个在重命名阶段,一个在提交阶段。物理寄存器的数量也必须多于逻辑寄存器的数量。它的工作原理基本上是这样的:

  1. 对于每个逻辑输入,在重命名阶段映射表中查找以找出当前保存该逻辑寄存器值的物理寄存器。
  2. 对于每个逻辑输出,找到一个未使用的物理寄存器并将输出映射到它。更新重命名阶段映射表。如果没有可用的物理寄存器,请等待,直到有可用的物理寄存器。
  3. 在提交阶段,当提交指令时,用新映射覆盖指令逻辑输出的旧逻辑到物理映射。作为旧映射一部分的免费物理寄存器。
  4. 如果出现错误预测(或管道中任何类型的挤压),提交阶段中的表将覆盖重命名阶段中的表,并且管道中的所有内容都会被吹走。

关于保留站的部分实际上是无序管道的具体实现,并且本质上伴随着物理寄存器。有很多机器实际上并没有保留站的概念。

Hennessy 和 Patterson 的计算机体系结构书籍是此类内容的标准教科书。我试图尽可能简单地解释这一点,但实际上有数千个优化此内容的建议。

关于hardware - 了解 Tomasulo 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219418/

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