我们以两张图来简单说明L2缓存的作用。
如果把GPU内核比作网店店主,那么L1缓存就是在日常工作的屋子中堆放的可发货产品,但由于所有工作都要在这间屋子进行,堆放产品的空间有限;所以大部分产品就需要到L2缓存中,它就好比在工作室隔壁的仓库,虽然需要走出去,但仍然是很近的路程。
如果这个仓库还是放不下,那么只能到更远的显存中去调取产品。当然如果有爆显存的情况,那么这位“店主”可能还要打车去更远的系统内存区调取数据。
这中间的路程和耗费时间就好比GPU额外的工作量,如果绝大部分数据只存放在L2缓存就可以拿到,那么将极大节省功耗。并且由于不再需要频繁调取显存中的数据,所以显存位宽适当降低,对于运行效率也是没有影响的。
在真正的GPU中,内核是所有计算发生的地方,而这就是L1数据缓存的作用所在。每个SM都有一个超低延迟的L1数据缓存,紧挨其处理内核,使L1成为GPU寻找信息的首选。
然而,由于L1缓存需要离内核非常近,不可能非常大。
如果在L1缓存中找不到内核计算所需的数据,GPU将在L2数据缓存中寻找。这个显存系统位于GPU芯片上,并通过一个非常高速的横梁系统连接到所有的GPC(图形处理集群),每个GPC包括多个SM。如果在L2缓存中找到了信息,那么GPU就挑出这些数据并将其放入内核。
如果在L2缓存中找不到信息(被称为缓存缺失),那么GPU将通过显存接口在VRAM中寻找。这在整个GPU存储子系统中产生了很多额外的工作量,并降低了性能和功耗效率。
完整的AD102核心
完整的AD106核心