【问题标题】:reorder buffer problem (computer architecture Udacity course)重新排序缓冲区问题(计算机体系结构 Udacity 课程)
【发布时间】:2021-08-19 17:22:09
【问题描述】:

有人可以根据提供给该问题的解决方案手册向我解释为什么指令 I5 的发布时间是第 6 周期而不是第 5 周期。

注意:1)问题及其已发布的解决方案在下面提到 2)这个问题是 Udacity 计算机体系结构课程问题集的一部分

问题:

使用 Tomasulo 算法,对以下每条指令 序列确定何时(在哪个周期,从开始计数)它 发出,开始执行,并将其结果写入 CDB。认为 一条指令的结果可以写在它之后的循环中 完成其执行,并且依赖指令可以(如果 selected) 在之后的循环中开始执行。执行 所有指令的时间都是两个周期,除了乘法 (需要 4 个周期)和除法(需要 8 个周期)。这 处理器有一个乘法/除法单元和一个加法/减法单元。这 乘法/除法单元有两个保留站和加法/减法 单位有四个预约站。没有一个执行单元是 流水线——每条指令一次只能执行一条指令。如果 选择时发生使用执行单元的冲突 应该开始执行哪条指令,较旧的指令( 在节目顺序中较早出现的节目)具有优先权。如果发生冲突 对于 CBD 的使用,加/减单元的结果有 优先于乘法/除法单元的结果。假设在 开始所有指令已经在指令队列中,但是没有 尚未发给任何预订站。处理器可以 每个周期只发出一条指令,并且只有一个 CDB 用于 写结果。在处理器中处理异常的一种方法 上述将简单地删除所有指令 保留站和指令队列,将所有 RAT 条目设置为 指向寄存器文件,并尽快跳转到异常处理程序 尽可能(即在除以零之后的循环中 被检测到)。 1)找出每条指令的周期时间, 执行和写回阶段。 2)将打印什么 如果以这种方式处理异常,则异常处理程序?


提供的解决方案:

时序图

第二个问题的答案

异常发生在第20个周期,所以我们开始执行异常处理程序的周期 是第21个周期,那个时候处理器已经完成了指令I1-I4,但是也完成了 指令 I6 和 I10。结果,寄存器文件中的寄存器 F4 将有 I10 的结果, 这是-1(5-6)。异常处理程序会打印 2,0、-2、-1,这是不正确的。

【问题讨论】:

  • 原题没有段落吗?那是一堵文字墙。
  • 没有 @PeterCordes 我只是复制并粘贴了课程中出现的问题

标签: cpu-architecture


【解决方案1】:

是否存在有限的 ROB 或 RS(调度程序)大小,会阻止前端发出更多指令,直到某些已调度以腾出更多空间(RS 大小),或直到某些已退出(ROB 大小)?前端的最佳情况通常比后端具有更好的吞吐量,因此后端可以稍后查看可能的独立指令。但是后端可以跟踪多少未执行的指令必须有一些限制。

在这种情况下,是的:

乘法/除法单元有两个保留站,加/减单元有四个保留站

所以我认为这是限制因素:前两条指令是 mul 和 div,其中第一条指令在第 5 周期完成。显然,该 CPU 直到回写后的周期才释放 RS 条目。 (而不是一个统一的调度器,它为每种执行单元分别设置了队列(预留站)。)


一些真正的 CPU 可能更具攻击性,例如我认为英特尔 CPU 可以更快地释放 RS 条目,即使它们有时需要重播 uop,如果它在预期缓存命中的早期乐观地调度(当输入是负载的结果时):Are load ops deallocated from the RS when they dispatch, complete or some other time?

【讨论】:

    猜你喜欢
    • 2014-07-06
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2015-05-18
    • 2017-06-14
    • 1970-01-01
    相关资源
    最近更新 更多