设置,读取,移动和比较等操作是否需要同时执行?
如果没有:有没有办法找出多长时间。
我的意思是什么名称,某些特定类型cpu执行不同汇编语言指令的速度(移动,读取等)
答案 0 :(得分:8)
您可能正在寻找的关键术语是:
这些应该很容易谷歌。但基本上,指令需要执行一定数量的周期(延迟)。但是你经常可以同时执行多个(吞吐量)。
像set,read,move和compare这样的操作需要同时进行 执行?
一般没有。不同的指令具有不同的延迟和吞吐量。例如,添加通常比分割快得多。
如果您对现代处理器上不同装配说明的实际值感兴趣,可以查看Agner Fog's tables。
也就是说,影响计算机性能的其他因素还有很多 其中大多数可能比指令延迟/吞吐量更重要:
答案 1 :(得分:3)
流水线和缓存以及cpu本身不再是主要瓶颈已经为你的问题做了两件事。一,今天的CPU通常每个时钟执行一条指令,其次可能需要很多(几十到几百)个时钟来为cpu提供指令。更现代的处理器,即使它们的指令集很旧,也很少提及时钟执行,因为它是一个时钟而且“真正的”执行速度太难以描述。
缓存和管道尝试允许cpu以每个时钟速率的一条指令运行,但是例如从内存中读取,必须等待响应返回。如果这个项目不在高速缓存中,则可能需要数百个时钟周期,因为它必须读取多个位置以填充高速缓存中的一行,然后再用一些时钟将其通过高速缓存返回到处理器。
现在,如果您回到过去,或者在微控制器世界或其他系统中回顾时间,或者至少是一个非常确定的数字(比如两个时钟用于eeprom,一个用于eeprom) ram,那种事情),那么你可以很容易地计算确切的时钟数。像往常一样的处理器会发布每条指令的循环表。例如,两个指令读取将是两个时钟来获取指令,然后是另一个时钟来执行读取,最少3个时钟。有些人实际上需要多个时钟才能执行,因此也会加入。
我强烈建议迈克尔·阿布拉什(Michael Abrash)找到(使用过的)汇编语言禅的副本。它出现时已经过时,但仍然是一项重要的工作。学习如何处理相对简单的8088/86已经足够强大,今天的x86和其他系统相当复杂。
如果运行Windows或Linux或类似的东西试图为你的代码计时,不一定能让你到达你想要的地方。添加或删除一个nop,导致代码在内存中对齐,因为一个字节会对代码的其余部分的性能产生巨大影响,而不是它在ram中的位置没有改变。作为理解问题复杂性的一个简单例子。
您对哪种处理器或系统感兴趣? stm32f4发现板,大约20美元,包含一个带有指令和数据缓存的ARM(cortex-m)处理器。它具有更大系统的复杂性,但同时足够简单(相对于更大的系统)能够进行受控实验。
如果您熟悉微芯片pic世界,他们通常会计算周期以在事件之间执行精确延迟。一个非常确定的环境(只要你不使用中断)。
答案 2 :(得分:2)
每种汇编语言指令的速度有多快?设置,读取,移动和比较等操作是否需要同时执行?
您可以在CPU的制造商(例如Intel)的CPU汇编语言手册中找到此信息。每个CPU结构通常都有一两页,它会告诉你执行需要多少“周期”。它将在其他地方定义“周期”。指令可以根据给出的内容执行不同的时间。例如条件跳转可能会也可能不会跳转。乘以零可以(我假设)比乘以7更快。
答案 3 :(得分:0)
答案是MIPS。或每秒IPS百万条指令。既然你在谈论嵌入式系统。