应吧友要求,假期稍微研究了一下。
CU架构大概是这样了。
CU大体上类似于GCN的设计,
总共4个SIMD,共享前端逻辑部分,但有独立的指令缓冲和程序计数器,
S80的Wave宽度为128,共享的发射端每周期为其中一个SIMD发射一条Wave128指令。
每四周期一个循环。
所以SIMD的吞吐率倒数也是4周期。
但和GCN不同的是,GCN的SIMD延迟也为4周期,而S80的延迟高达10周期,不依赖指令级并行的情况下,
即便使用另外一条线程来掩盖延迟,也任然会浪费两个周期。
所以要完全利用S80的CU吞吐率,必须依靠指令级并行。它的兄弟GCN只依靠线程级并行,所以也无需做单元竞争的记分牌,所以调度上GCN更加简单高效。
寄存器方面,每个SIMD配备了128KiB的寄存器,从比例上来看,和GCN一致。
访存部分,还没有仔细测试。
完