0

考虑对执行以下指令的单周期非流水线处理器进行更改:LDURSTUR和。考虑以以下方式用一对新指令替换指令的修改:R-typeCBZLDUR

原始代码:

LDUR X1, X2, #100 /* X1=mem[X2+100] */

新代码:

ADD X4, x2, #100 /* X4=X2+100  */
LD  X1, X4       /* X1=mem[X4] */

我被问到可能的优点和缺点。我可以看到在非流水线处理器上将一条指令变成 2 条指令的缺点。我似乎找不到任何可能的优势。

有谁知道这样做的可能优势?

4

1 回答 1

4

我唯一想到的是偏移量,但我有一种直觉,可能会有一些额外的隐藏,因为这个问题来自学术人士。然而:

LDUR的可能偏移量在 -256 到 255 的范围内。ADD另一方面,它的偏移量范围更大,从 0 到 4095,这允许您实现一个函数来处理更大的静态偏移量。

文件:

ARM 架构参考手册 ARMv8,用于 ARMv8-A 架构配置文件

参考:

ADD: C6.2.4 (C6-698 页)
LDUR: C6.2.155 (C6-978 页)

于 2019-02-26T13:58:21.763 回答