我只是有一个简单的问题,有点愚蠢,但是我只需要对即将到来的考试做一些澄清,所以我不会犯一个愚蠢的错误。我目前正在上计算机组织和设计课程,正在学习执行时间,CPI,时钟周期等。
对于一个问题,我必须计算2个编译器的周期数量,并找出哪一个更快,以及给定的指令数和每条指令的周期多少。我的主要问题是确定更快的编译器的速度。
例如,假设他们是两个编译器:
Compiler 1 has 3 load instructions, 4 store instructions, and 5 add
instructions.
Compiler 2 has 5 load instructions, 4 store instructions, and 3 add
instructions
加载指令需要2个周期,存储指令需要3个周期,加法指令需要1个周期
所以我要做的加起来等于(3 + 4 + 5)和(5 + 4 + 3)这两个指令,它们都等于12条指令。
然后我将指令数量乘以周期,然后像这样将它们全部加在一起,从而计算出周期
Compiler 1: (3*2)+(4*3)+(5*1) = 23 cycles
Compiler 2: (5*2)+(4*3)+(3*1) = 25 cycles
因此显然编译器1更快,因为它需要更少的周期。要找出编译器1与编译器2相比要快多少,我是否要除以周期比率?
我的计算是23/25 = 0.92,所以编译器1比编译器2快0.92倍(快92%)。
我的一个同学正在与我讨论这个问题,并声称它将是25/23,这意味着它快了1.08倍。
我知道我也可以通过将周期除以如下指令来计算:
23 cycles/12 instructions = 1.91
25 cycles/12 instructions = 2.08
and then 1.91/2.08 = 0.92 which is the same as the above answer.
我不确定哪种方法正确。
我还想知道第二个编译器的指令数量是否不同,比如说15条指令。计算循环比率是否足够?
还是我必须将周期与指令(周期/指令)分开,但要为两者都放入15条指令?
(ex. 23/15 and 25/15?) and then divide the quotients of both to get
the times faster? I also get the same number(0.92) in that case.
谢谢您的澄清。
答案 0 :(得分:3)
第一个编译器的速度是第二个编译器的1.08倍,这快了 8%(因为1.0 + 0.08 = 1.08)。
答案 1 :(得分:0)
这两种计算可能都不准确,对于现代/多核处理器,生成更多指令的编译器实际上可能会生成更快的代码。