代码之家  ›  专栏  ›  技术社区  ›  HaggarTheHorrible

澄清:处理器在800兆赫和200兆赫DDR RAM下工作

  •  2
  • HaggarTheHorrible  · 技术社区  · 15 年前

    我有一个评估工具包,里面有一个ARMCortex-A8核心的实现。处理器数据表说明它有一个

    ARM Cortex A8_内核,运行速度高达800MHz,最高可达200MHz DDR2 RAM。

    我能从这个系统中得到什么?我是否可以假设内存访问将成为瓶颈,因为它的工作频率只有200MHz?

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

    2 回复  |  直到 11 年前
        1
  •  3
  •   Thomas Pornin    15 年前

    处理器使用内部缓存(实际上是多个缓存),它可以“全速”访问。缓存很小(通常为8到32千字节),由外部RAM中的块(“缓存线”)填充(缓存线将是几十个连续的字节)。当代码需要一些当前不在缓存中的数据时,处理器将不得不从主RAM中提取行;这称为 缓存未命中 .

    从主RAM获取缓存线的速度由两个参数描述,称为 延迟 和 带宽 . 延迟是处理器发出请求和接收第一个缓存线字节之间的时间量。典型的延迟约为30ns。在800兆赫时,30ns意味着24个时钟周期。带宽描述了在总线上每纳秒可以发送多少字节。”200兆赫DDR2”表示总线时钟将以200兆赫运行。DDR2 RAM每个周期可以发送两个数据元素(因此每秒可发送4亿个元素)。带宽则取决于CPU和RAM之间有多少条线:使用64位总线和200兆赫DDR2 RAM,您可以希望在理想条件下达到3.2千兆字节/秒。因此,尽管第一个字节需要相当长的时间才能获得(CPU所能做的事情的延迟很高),但是缓存线的其余部分读取得相当快。

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

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

    查看 Wikipedia page on caches 关于缓存的介绍和指针。

    (在80年代,大的预计算表是一种常见的优化技巧,因为那时处理器的速度不超过RAM,而单周期内存访问是规则。这就是为什么8兆赫摩托罗拉68000的CPU没有缓存。但这些日子早已过去。)

        2
  •  0
  •   paxdiablo    15 年前

    是的,内存可能是一个瓶颈,但您不太可能运行这样的应用程序 没有什么 但是读写记忆。

    在CPU内部,内存瓶颈不会产生影响。