首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Tomasulo算法

理解Tomasulo算法
EN

Stack Overflow用户
提问于 2012-06-27 04:29:42
回答 2查看 2.4K关注 0票数 6

因此,我试图理解Tomasulo算法的无序指令执行。以下是我目前所取得的成果:

  • 指令按顺序提取并存储在指令队列中.
  • 注册重命名发生在接下来的某个地方.?据我所知,这是为了避免战争/WAW的危险,给登记册贴上标签。假设您添加了r1、r2、r3 (1) --添加r3、r5、r6 (2) --您有战争危险,需要确保指令(1)在添加到r1之前读取r3的旧值。因此,我猜在指令队列(?)硬件重命名寄存器,即添加r1、r2、r3#1添加r3#2、r5、r6或类似的东西。
  • 向预订站发出指示。据我所知,每个功能单位都有自己的预定站。但是,当公共数据总线上可用适当标记的操作数时,执行该功能单元的指令是否类似于队列(FIFO)?
  • 由于指令可以按任意顺序(无序)完成,而更多的指令可能会不断出现.是否有一个阶段,公共数据总线更新注册文件之前,更多的指令进来?我听说使用了一个重新排序的缓冲区,它基本上是按照顺序对指令进行排序(这必然意味着指令有某种标记),然后将寄存器结果提交回寄存器文件。

我所困惑的是寄存器重命名的实现,以及预订站的结构。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-28 22:30:41

Tomasulo的算法实际上与任何特定的硬件无关,实际上,在实际机器中,寄存器重命名通常在将指令插入指令队列之前进行。让我们把几个基本点弄清楚。首先,程序中表示的寄存器是逻辑寄存器。第二,实际的硬件寄存器称为物理寄存器。Tomasulo的算法只是一种将逻辑寄存器映射到物理寄存器的机制。在实际机器中,通常有两个表将逻辑寄存器映射到物理寄存器。一个在重命名阶段,另一个在提交阶段。还必须有比逻辑寄存器更多的物理寄存器。它基本上是这样运作的:

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

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

Hennessy和Patterson的“计算机建筑”是这类东西的标准教科书。我试着尽可能简单地解释这一点,但实际上有成千上万的建议来优化这些东西。

票数 7
EN

Stack Overflow用户

发布于 2013-08-28 13:57:31

  1. Tomasulo算法与重新排序缓冲区无关。Tomasulo算法的目的是实现无序执行,而重排序缓冲区的动机是实现精确的中断。
  2. 通用的寄存器重命名方案提供了比ISA需要更多的物理寄存器。在这种情况下,在指令被输入指令队列之前,它的体系结构寄存器(例如r5)的名称已被修改为物理寄存器(例如p19)。然而,Tomasulo算法使用了另一种方法,其中指令的寄存器实际上被“重命名”为No。一个部件(一个部件可以是预订站或任何寄存器中的单个插槽/条目)。

您可以在此幻灯片中提供更多详细信息:

http://www.slideshare.net/onesuper/understanding-tomasolu-algorithm

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11219418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档