每个机器语言指令执行需要多长时间



设置、读取、移动和比较等操作是否都需要相同的时间执行?

如果没有:有没有办法知道要多久。

我的意思是,一些特定类型的cpu执行不同汇编语言指令(移动、读取等)的速度有什么名字吗

  • 指令延迟
  • 指令吞吐量

这些应该很容易在谷歌上搜索。但基本上,指令执行需要一定数量的周期(延迟)。但您通常可以同时执行其中的多个(吞吐量)。

设置、读取、移动和比较等操作是否都需要相同的时间执行?

一般不会。不同的指令有不同的延迟和吞吐量。例如,加法通常比除法快得多。


如果你对现代处理器上不同汇编指令的实际值感兴趣,你可以看看Agner Fog的表格。


也就是说,影响计算机性能的因素还有很多
其中大多数可以说比指令延迟/吞吐量更重要:

  • 缓存
  • 内存
  • 磁盘
  • Bloat(这似乎是一个大问题…:D)
  • 等等。。。名单一直在列

流水线和缓存以及cpu本身不再是主要瓶颈对您的问题做了两件事。首先,今天的cpu通常每个时钟执行一条指令,第二,向cpu提供指令可能需要很多(几十到几百)个时钟。更现代的处理器,即使它们的指令集很旧,也很少提及时钟执行,因为它是一个时钟,"真实"的执行速度很难描述。

缓存和管道试图允许cpu以每时钟一条指令的速度运行,但例如从内存读取,必须等待响应返回。如果该项不在缓存中,则可能需要数百个时钟周期,因为它必须读取多个位置才能填充缓存中的一行,然后再读取一些时钟才能通过缓存返回处理器。

现在,如果你回到时间,或者现在的时间,但在微控制器世界,或者其他系统中,存储系统可以在一个时钟中响应,或者至少是一个非常确定的数字(比如两个时钟用于eeprom,一个时钟用于ram,诸如此类),那么你可以非常容易地计算时钟的确切数量。像这样的处理器通常会发布每条指令的周期表。例如,两条指令的读取将是两个时钟来获取指令,然后是另一个时钟来执行读取,最少3个时钟。有些实际上需要一个以上的时钟才能执行,因此也会添加这些时钟。

我强烈建议找一本(用过的)迈克尔·阿布拉什的《汇编语言的禅宗》。它问世时已经过时了,但仍然是一部重要的作品。学习处理相对简单的8088/86已经够难的了,如今的x86和其他系统要复杂得多。

如果运行windows或linux或类似的东西,尝试计时代码不一定能让你到达你想要的地方。添加或删除nop,导致代码在内存中对齐多达一个字节,这可能会对代码的其余部分的性能产生巨大影响,而代码在ram中的位置除外。作为理解问题复杂性的一个简单例子。

您对什么处理器或系统感兴趣?stm32f4发现板售价约20美元,包含一个带指令和数据缓存的ARM(cortex-m)处理器。它具有更大系统的复杂性,但同时足够简单(相对于更大的系统),能够进行受控实验。

如果你熟悉微芯片图片世界,他们通常会计算周期,以执行事件之间的精确延迟。一个非常确定的环境(只要你不使用中断)。

每个汇编语言指令需要多快?像设置、读取、移动和比较这样的操作是否都需要相同的时间来执行?

您可以在CPU制造商(例如Intel)的CPU汇编语言手册中找到这些信息。每个CPU指令通常都有一两页,它会告诉你执行需要多少"周期"。它将在其他地方定义"周期"。指令的执行可能需要不同的时间,具体取决于给出的内容。例如,有条件的跳跃可以跳跃也可以不跳跃。乘0可能(我假设)比乘7快。

答案是MIPS。或每秒IPS百万条指令。既然你说的是嵌入式系统。

相关内容

  • 没有找到相关文章

最新更新