问题:DRAM中数据总线的宽度与数据类型的相关性

问题描述 投票:0回答:1

我们假设一个64位ARM系统,有64位数据总线,DRAM每个时钟周期可以将64位数据传输到数据总线。

现在,让我们考虑一个场景,使用 volatile 关键字创建一个限制缓存使用的环境。

在这种情况下,人们可能期望将 int64_t 和 int32_t 的 N 个数据元素从 DRAM 传输到 CPU 时性能应该相同。

但是实验结果表明,传输1亿个int64_t数据元素和传输1亿个int32_t数据元素的速度并不相同。

Time to read 100 million int64_t data elements = 7.04 ms.
Time to read 100 million int32_t data elements = 4.09 ms.

我很好奇为什么在不涉及缓存的情况下性能不一样。有什么我可能错过的吗?

memory arm ram
1个回答
0
投票

不确定这是否与您的其他问题有关。 64 位 ARM 系统可能会出现内存不足的情况,但不会变暗。例如,如果您正在通话,则它可能是 16 位宽的 DRAM 总线。绝对不可能每个时钟做一个。 (也不是两个,因为它是 DDR)。至少没有持续下去。否则为什么要有缓存???

易失性与缓存使用无关,它是一种高级语言,与代码的构造有关(通常它会创建更多代码,更多指令,执行时间更长)。

易失性不会禁用缓存。缓存与否与该地址空间的 mmu 设置和其他因素有关。

您没有远程提供足够的信息。您是在操作系统上运行吗?您是在应用程序层上运行吗?等等。请提供一个完整的最小示例。您是通过内存线性读取还是保留在缓存行中?这是您正在运行的市售基于手臂的板,您可以命名以供参考还是封闭设计?

根据您之前的问题,这可能有一个 DRAM 芯片,可能是 16 位宽的总线,但 DDR 是每个时钟 32 位(对于能够执行事务的突发)。并且字节,比如说 8 个字节在该内存中将是线性的,您可能仍然在整个系统中进行一些平衡,使您的线性地址空间视图在 dram 中呈条带状。

但到目前为止,这个问题与 dram 无关。

© www.soinside.com 2019 - 2024. All rights reserved.