Cuda 为什么共享内存比全局内存快?

Cuda 为什么共享内存比全局内存快?,cuda,shared-memory,Cuda,Shared Memory,这种速度上的差异是由于两者所采用的技术造成的吗(据我了解,共享内存是一种草稿行内存,主要是SRAM内存,而全局内存通常是DRAM内存) 如果两者都是用相同的技术制造的,那么由于额外的指令(加载指令),共享内存是片上的,而全局内存是片外的,那么性能会有什么不同呢或者全局内存需要额外的硬件电路来将其数据加载到处理器中?至少有两个原因是您已经指出的。有一个: 位置差异-共享内存是片上的,全局内存(至少,普通的全局内存访问不会在缓存中命中)是片外的。内存通常以固定频率计时,最大频率取决于系统计时的速度。

这种速度上的差异是由于两者所采用的技术造成的吗(据我了解,共享内存是一种草稿行内存,主要是SRAM内存,而全局内存通常是DRAM内存)


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

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

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

  • 技术差异。SRAM单元(例如,共享内存)的时钟可能比DRAM单元(例如,片外全局内存)快,并且SRAM更适合快速随机访问。DRAM有一个更复杂的访问序列,当一个单元被访问时,它就开始发挥作用。DRAM还受到刷新等机制的影响,这些机制可能会妨碍连续快速访问。然而,我认为技术差异不是什么问题。另一个与技术相关的问题是,SRAM阵列通常更适合现代处理器使用的逻辑进程(能够以更高的密度放置)。对于最高密度,DRAM阵列使用的半导体工艺与处理器内部用于一般逻辑的工艺有很大不同


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

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