我有一个评估套件,该套件具有ARM Cortex-A8核心的实现。处理器数据表指出它具有

ARM Cortex A8™核心的速度高达800MHz,最高为200MHz DDR2 RAM。

我对这个系统有什么期望?我是否可以假设内存访问将是瓶颈,因为它仅在200MHz下运行?

需要有关如何解释这一点的更多信息。

有帮助吗?

解决方案

处理器可与内部缓存(实际上,几个)一起使用,可以以“全速”访问。缓存很小(通常为8至32千字节),并由外部RAM的块(“缓存线”)填充(缓存线将连续几十个字节)。当代码需要当前在高速缓存中的某些数据时,处理器将不得不从Main RAM获取线路;这称为 缓存小姐.

通过两个参数描述了从主RAM获得的缓存线的速度,称为 潜伏带宽. 。延迟是处理器发出请求的那一刻与收到第一个缓存线字节的那一刻之间的时间。典型的潜伏期约为30n。在800 MHz时,30NS平均24个时钟周期。带宽描述了可以在公共汽车上发送每纳秒数的字节。 “ 200 MHz DDR2”是指公交时钟将以200 MHz的速度运行。 DDR2 RAM每个周期可以发送两个数据元素(因此每秒4亿个元素)。然后,带宽取决于CPU和RAM之间的电线:64位总线和200 MHz DDR2 RAM,您可以希望在理想条件下获得3.2 GBYTES/s。因此,尽管第一个字节需要花费很多时间才能获得(关于CPU可以做什么,延迟很高),但其余的高速缓存线的读取很快。

另一个方向:CPU将一些数据写入其缓存,一些电路将在其闲暇时传播修改为主RAM。

上面的描述过于简单。缓存和缓存管理是一个复杂的领域。底线如下:如果您的代码在内存中使用大数据表并以看似随机的方式访问它们,则该应用程序会很慢,因为大多数时候,处理器只会等待从主内存中等待数据。另一方面,如果您的代码可以用少量RAM(不到几十千字节)运行,那么很可能大部分时间都会在最内部的缓存中运行,而且外部RAM速度将不重要。能够以一种与缓存良好运行的方式使内存访问的能力称为 参考的局部性.

看到 卡切斯的Wikipedia页面 有关缓存问题的介绍和指示。

(大型预算表是80年代期间的一个常见优化技巧,因为当时处理器不高于RAM,而单周的内存访问是规则。这就是为什么8 MHz Motorola 68000 CPU没有缓存。但是如今早已一去不复返了。)

其他提示

是的,内存很可能是瓶颈,但是您不太可能运行一个应用程序 没有 但要读写并写入内存。

在CPU内部,内存瓶颈不会产生效果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top