● 黑科技的最深处:Scheduling过程
在整个GTX680以及Kepler构架中,隐藏最深同时可能产生的影响也最为深远的改进,来自任务调度以及仲裁过程的巨大变化。
GPU的逻辑结构决定了它并不适合被用来执行关联度过高过深的条件分支过程,因此对于任务的关联性检查是整个GPU任务队列执行过程中一个非常重要的步骤。在以Fermi为代表的传统仲裁体系中,任务会在解码过程之后完成指令的关联性检查,如果指令存在超过一定限度的关联性,为了规避条件分支对性能产生的影响,这些指令会被重新打包以便ALU团簇进行吞吐。在完成这些关联性检查之后,明确执行方向的指令才会被送入流水线中进行执行。为了加快这一过程的速度,Fermi构架为这个过程提供了Multiport Post decode Queue以及对应Register的硬件支持。
Kepler构架与Fermi构架执行Scheduling过程的差异
在Kepler构架中,这一传统的过程发生了巨大的变化,NVIDIA称在Kepler中任务会在解码之前根据Sched.info进行选择,然后直接进行解码并被送入流水线中完成后续处理。整个关联性检查以及指令重组等过程被一个简单的Sched.info-select所取代。在该过程下,指令从解码到执行几乎没有延迟,整个流水线因此获得了极高的执行效率。
对于这一改进,我们的评价是“这完全是一个黑科技”。从过程来看,这一看似简单的过程实际上已经具备了初步的分支预测的特质,这较之Fermi构架“随机抽取方向然后一条路跑到黑”的分支论断有了长足的进步。将任务关联性检查提前到解码过程之前也极大地加大了流水线的执行密度,进而提升了整个GPU的单元复用率。但受限于NVIDIA公布技术细节方面的保留,我们目前还无法深入到这一改进的核心部分。所以,我们暂且将其归结到诸多提升GTX680性能但却未被公布的“黑科技”中的一个,并将对其保持持续的关注。
推荐经销商