【问题标题】:why shared memory is faster than global memory?为什么共享内存比全局内存快?
【发布时间】:2015-05-02 12:11:24
【问题描述】:

速度上的差异是否是由于两者所采用的技术(我读到共享内存是一个暂存器内存,主要是 SRAM 内存,而全局内存通常是 DRAM 内存)?

如果两者都是用相同的技术制造的,由于额外指令(加载指令)或全局内存需要额外的硬件电路,所以基于共享内存在片上和全局内存在片外的性能会有什么差异?将其数据加载到处理器中?

【问题讨论】:

  • 这是一道编程题吗?这似乎是一个硬件设计问题。

标签: cuda shared-memory


【解决方案1】:

您已经指出了至少两个原因。有一个:

  1. 位置差异 - 共享内存在芯片上,全局内存(至少,普通的全局内存访问不会在其中一个缓存中命中)在芯片外。内存通常以固定频率计时,最大频率将取决于系统的计时速度。长传输线、将信号从片外驱动到片上(反之亦然)的缓冲器以及许多其他电路效应将减慢特定电路的最大时钟速率。因此,共享存储器在芯片上具有相当大的优势。缓存(L1、L2、只读、常量缓存、纹理缓存等)都受益于相同的原理。

  2. 技术差异。 SRAM 单元(例如共享存储器)的时钟频率可能比 DRAM 单元(例如片外全局存储器)更快,并且 SRAM 更适合快速随机访问。 DRAM 有一个更复杂的访问序列,当访问一个单元时会起作用。 DRAM 还受到诸如刷新之类的机制的影响,这些机制可能会妨碍连续快速访问。但是,我建议技术差异不是问题。另一个与技术相关的问题是 SRAM 阵列通常更适合现代处理器使用的逻辑过程(能够以更高的密度放置)。为了实现最高密度,DRAM 阵列使用的半导体工艺与处理器内部的通用逻辑工艺大不相同。

所需的处理器指令不会成为共享内存和全局内存访问时间之间有意义的区别。

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2018-05-18
    • 2012-08-10
    • 1970-01-01
    • 2011-09-29
    • 2012-06-11
    • 2013-02-20
    • 2018-02-21
    • 2021-11-01
    相关资源
    最近更新 更多