用汇编语言

时间:2018-01-31 08:51:22

标签: assembly cpu-architecture instructions

enter image description here

这是一个程序中给出的许多指令的表格。第一列表示指令本身,第二列表示程序中任何指令的权重百分比,第三列表示任何给定指令的CPI(每指令周期数)。

现在,我想用一条指令 madd 替换添加 mult

  

madd 接受三个输入,将前两个输入相乘,并将结果添加到第三个输入。这种方式 madd 指令同时进行乘法和加法。

添加 mult 的当前权重为40%。所以问题是当我用 madd 替换 mult add 时,新 madd 指令的权重是多少?

1 个答案:

答案 0 :(得分:1)

  

add和mult的当前重量均为40%。所以问题是我什么时候   取代mult并添加madd将是新Madd的重量   指令?

如果程序在一个地方包含添加(占用CPU时间的30%),并且在一个与添加无关的完全不同的地方进行乘法(消耗10%的CPU时间);那么用“乘法和加法”指令替换任何东西都是完全不可能的。

如果程序包含一个加法(占用CPU时间的30%)和1000次乘法(每次占用CPU时间的0.01%),那么对于“最佳情况”,您只能替换一个加法和一个乘法,你还有999个“不成对”的乘法。

如果程序包含1000个添加(每个占用CPU时间的0.03%)和一个乘法(占用CPU时间的10%),那么对于“最佳情况”,您只能替换一个加法和一个乘法,你仍然有999“未配对”的补充。

如果你知道有相同数量的加法和乘法,并且所有这些都可以配对,并用“乘法和加法”指令代替而不改变载荷,存储或分支的数量;然后你不知道“乘法和加法”指令有多快/慢(或者至少你没有提供这些信息),因此仍然无法弄清楚它会如何影响性能。

换句话说,你几乎找不到找到答案所需的信息。