1

我们有一个Datapath来自一个 CPU,如下图。如果下一条指令地址在PC Register,

clock cycle获取并执行多少word add条指令?

内存为 10 位,每条指令至少为 2 个字。所有寄存器都是 10 位的并且有INC (increment), CLR (clear), LD(load)指令。Addr表示直接寻址。指令适用于 10 位字:

Wadd (src1), (src2), (dst)

在此处输入图像描述

我的导师解决了它是 15 个时钟周期。任何提示或想法,这将如何计算?

编辑:

我的尝试 * 但我不确定,我的尝试是真还是假:

在此处输入图像描述

4

1 回答 1

0

PC当您移动一次太多次时,您的解决方案并不完全有效,这意味着您正在加载目标指针作为源 2 指针(在步骤 5 中,您不应再次增加 PC)。我没有注意到您的解决方案中有任何其他错误,但是我能够找到一个更快的错误:

[更新:显然处理器中有一个 IR;所以我们假设 IR 可以从 DR 加载]

获取操作码

步骤1:AR <- PC

第2步:DR <- M[AR]; PC++; AR++

第 3 步:IR <- DR; DR <- M[AR]

第4步:Decode(IR)

获取 SRC1

第 5 步:AR <- DR; PC++

第 6 步:DR <- M[AR]; AR <- PC

获取 SRC2 (SRC1 到AC)

第 7 步:AC <- DR; DR <- M[AR]; PC++

第 8 步:AR <- DR

第 9 步:DR <- M[AR]; AR <- PC

添加并获取 DEST

第 10 步:AC <- AC + DR; DR <- M[AR]

将答案放在 DEST 中(如果我们想继续下一条指令,单独的答案)

第 11 步:AR <- DR; DR <- AC PC++

第 12 步:M[AR] <- DR AR <- PC

[更新2:因为似乎随机要求需要 15 个周期;这是一个 15 周期的解决方案...请注意,12 周期是理想的,您应该与您的助教/教授讨论]

获取操作码

步骤1:AR <- PC

第2步:DR <- M[AR]; PC++; AR++

第 3 步:IR <- DR

第4步:DR <- M[AR]

第 5 步:Decode(IR)

获取 SRC1

第 6 步:AR <- DR; PC++

第 7 步:DR <- M[AR]

第 8 步:AR <- PC

获取 SRC2 (SRC1 到AC)

第 9 步:AC <- DR

第 10 步:DR <- M[AR]; PC++

第 11 步:AR <- DR

第 12 步:DR <- M[AR]; AR <- PC

添加并获取 DEST

第十三步:AC <- AC + DR; DR <- M[AR]

将答案放在 DEST 中(如果我们想继续下一条指令,单独的答案)

第 14 步:AR <- DR; DR <- AC PC++

第 15 步:M[AR] <- DR AR <- PC

于 2015-02-18T21:20:46.460 回答