假设我有一个程序,其中包含添加两个数字的指令,该操作需要10纳秒(常数,由门制造商强制执行).
现在我有3个不同的处理器A,B和C(其中A
A的一个时钟周期为15纳秒,B为10纳秒,C为7纳秒.
首先,我是按照以下假设纠正的:
1.添加操作需要1个完整的处理器A循环(慢速处理器),并且浪费剩余的5 ns循环.
2.添加操作需要1个完整周期的处理器B浪费时间.
3.添加操作需要2个完整周期(20 ns)的处理器C(快速处理器),浪费20-14 = 7 ns的其余部分.
如果上述假设是正确的,那么这与具有高时钟周期的处理器更快的常规假设不矛盾.
这里最快的处理器C实际上需要2个周期并且浪费7ns,而较慢的处理器A仅需要1个周期.
无论如何,处理器C都是最快的.每个周期需要7 ns,因此比A和B执行更多的周期.电路不够快,这不是C的错误.如果你以1 ns的速度实现加法电路,所有处理器将在1个时钟周期内给出答案(即C将给出7ns的答案,B为10ns,A为15ns).
首先,我是按照以下假设纠正的:1.添加操作需要1个完整的处理器A循环(慢速处理器),并且浪费剩余的5 ns循环.2.添加操作需要1个完整周期的处理器B浪费时间.3.添加操作需要2个完整周期(20 ns)的处理器C(快速处理器),浪费20-7 = 13 ns的剩余时间.
不是.这是因为您使用不完整的数据来表示操作的时间.衡量对特定处理器完成的操作中所花费的时间的时钟周期,而不是纳秒,你在这里干嘛.当你说ADD操作需要10 ns并且你没有提到你测量ADD操作时间的处理器时,ns中的时间测量是没有意义的.
因此,当您说ADD op在所有三个处理器上花费2个时钟周期时,您就已经标准化了测量.然后,标准化测量可以翻译为:
A加时间= 2个时钟周期*每周期15 ns = 30 ns
B加入的时间= 2个时钟周期*每周期10 ns = 20 ns
C加入的时间= 2个时钟周期*每周期07 ns = 14 ns
如果您没有注意到,当您说:
A的一个时钟周期为15纳秒,B为10纳秒,C为7纳秒.
三个处理器中哪一个最快?
答:C是最快的.它的一个循环在7ns完成.这意味着它在一秒钟内完成10 9/7(〜= 1.4*10 8)个循环,而B在一秒内完成10 9/10(= 10 8)个循环,相比之下A仅完成10 9个/秒15 秒(〜= 0.6*10 8)循环一秒钟.
ADD指令的含义是什么,它纯粹仅仅意味着ADD(在寄存器中有可用的操作数),还是意味着获取操作数,解码指令然后实际添加数字.
获得操作数是由MOV op 完成的.如果您正在尝试比较ADD操作的速度,则应该按时间比较它以仅执行ADD操作.另一方面,如果你想知道两个数字的加法速度有多快,那么它将涉及比简单ADD更多的操作.但是,如果它有用,所有原始8086/8088指令的列表也可以在维基百科上找到.
基于上面的上下文添加实际意味着什么,添加多少个周期,一个或多个.
它将取决于处理器,因为每个处理器可能使加法器的实现方式不同.有很多方法可以生成两个数字的加法.再次引用维基百科 - 全加器可以用许多不同的方式实现,例如使用定制的晶体管级电路或由其他门组成.
此外,指令中可能存在流水线操作,这可能导致数字的添加并行化,从而节省大量时间.
为什么时钟周期是标准,因为它可能因处理器而异.不应该将nanosec作为标准.至少它是固定的.
如果要告知处理器执行指令所花费的时间,则时钟周期和处理器速度可以成为标准.选择以下两个:
Time to execute an instruction
,
Processor Speed
,和
Clock cycles needed for an instruction
.
第三个可以从中衍生出来.
当您说ADD采用的时钟周期为x并且您知道处理器速度为y MHz时,您可以计算出ADD的时间是x/y.此外,您可以提到执行ADD的时间为z ns,并且您知道处理器速度与之前的y MHz 相同,您可以计算执行ADD所需的周期为y*z.