请问,SM里面的LD/ST单元是用来访问off-chip memory的么?
Fermi架构的GPU上一个SM只有16个LD/ST单元,如果用来访问off-chip memory的话,一个warp不是需要访问2次(warp里有32个线程,LD/ST单元只有16个)?
楼主您好:
(1)LSU不仅仅是用来访问global memory的,还可以进行L1和shared memory访问。
(2)虽然2.x上的确是16个,但LSU是倍频的(或者说至少它的某部分是倍频的,例如你可以理解和scheduler接轨的那部分是倍频的),如果折算到GPU频率,依然可以服务32个线程/周期的。
(这就好比,举个例子说,2.0只有2组SP, 每组16个,但它是倍频的,所以我们从GPU频率看,依然可以每周期为2个warp中的32*2个线程执行指令的)
以及,还需要补充下,LSU还可以进行加法计算, 但不能保存结果到寄存器,这个是免费的(例如某些情况下,可以用来进行下标计算,不占用SP)
简单的说:
您可以将2.0看成是没有倍频,但等效成2组32=64个SP和1组32=32个LSU的SM.
同理,
您可以将2.1看成是没有倍频,但等效成3组32=96个SP和1组32=32个LSU的SM.
您可能发现,从这个角度看会容易理解很多。