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

why shared memory is faster than global memory?

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

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

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

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

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

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