我们大多数来自电子领域的人都知道SRAM比DRAM快。但是,当比较RAM和ROM时,我不确定。
我的问题与微控制器有关:“如果代码直接从RAM / ROM执行,则其性能会更好-1)从RAM执行或2)从ROM执行或3)两者将表现相同”
还考虑到ROM被设计为具有更高的读取速度这一事实。而对于RAM,要具有写入功能就必须权衡读取速度。
我们大多数来自电子领域的人都知道SRAM比DRAM快。但是,当比较RAM和ROM时,我不确定。
我的问题与微控制器有关:“如果代码直接从RAM / ROM执行,则其性能会更好-1)从RAM执行或2)从ROM执行或3)两者将表现相同”
还考虑到ROM被设计为具有更高的读取速度这一事实。而对于RAM,要具有写入功能就必须权衡读取速度。
Answers:
数据手册应告诉您每条指令要花费多长时间,以及从RAM或ROM执行之间有什么区别(如果有)。
对于提供从RAM执行的选项的微控制器,速度可能更快,这很可能是使用额外的RAM空间从中执行代码的要点。可能还存在一些提取重叠问题。在某些情况下,从ROM执行可能会更快,因为它是单独的内存,并且RAM访问可以同时进行。
再次,了解任何特定微表的唯一方法是阅读数据表。
它完全取决于内存和CPU体系结构。根据经验,SRAM比闪存快,尤其是在高速MCU(> 100 MHz)上。SRAM位单元产生(或多或少)逻辑电平输出,而闪存必须经历较慢的电流感测过程。
再快多少(如果有的话)又取决于体系结构-存储器的字大小,每个存储器上的等待状态数,是否存在缓存,CPU指令的大小等。足够低的频率,闪存和RAM上的等待状态可能为零,因此它们可能以相同的速度运行。
该代码也很重要。如果您的代码严格是线性的(无分支),则闪存可以足够快地预取指令,即使在较高频率下,也可以保持CPU饱和。正如Olin所说,当代码和数据位于不同的存储器中时,具有单独的程序和数据读取路径的哈佛体系结构CPU可能会执行不同的操作。
金属ROM(以及其他非易失性存储器,例如FRAM)具有自己的特性,并且可能与SRAM一样快,也可能不与SRAM一样快。写作能力不一定会有所不同;更多有关位单元输出和感应电路的特性。
数据表将为您简要介绍一下速度差异,但是唯一可以确定的方法是分析代码。
“运行程序”需要具有同步时钟的CPU。可以通过以足够慢的时钟频率运行整个系统,或通过插入wait states
(在获取和解码阶段之间不做任何操作的时钟周期)来容纳慢速存储器,仅在某些地址范围内有效(例如,参见古老的8085)。只要数据在建立/保持间隔内没有变化,CPU指令提取就不会确切知道或关心何时将数据稳定到其最终值。
微控制器通常将其所有内存都放在芯片上,因此,除非另有说明,否则我将假定内存系统均为零等待状态。(但请阅读数据表进行确认)。与台式机相比,典型的微控制器意味着更简单的单芯片解决方案,因此微控制器中的等待状态不太可能。因此,微控制器不太可能与片上存储器速度不匹配。
更快的内存通常会带来额外的费用(更高的电压,更低的电容,更多的需求)。80xx86在L2高速缓存中具有快速SRAM,在L1高速缓存中具有更快的SRAM,并且许多较慢的DRAM片外连接到存储器控制器。这种系统比微控制器复杂得多,并且超出了问题的范围。(但是计算机工程师非常感兴趣!)