● 揭开黑科技的第一层面纱
早在Geforce GTX680的首测的过程中,Kepler架构全新的Scheduling过程就引起了我们极大的兴趣,它是Kepler众多“黑科技”中隐藏最深同时可能产生的影响也最为深远的改进之一。由于ISA结构资料的缺失以及测试初期对底层架构信息掌握的不足,我们在当时无法了解这一改进的细节。伴随着信息收集以及后续测试的不断深入,我们现在终于获得了足够的细节,同时也成功的将它与GK104的SMX结构改进以及NVIDIA的架构发展过程联系在了一起。
GPU的逻辑结构决定了它并不适合被用来执行关联度过高过深的条件分支过程,因此对于任务的关联性检查以及将关联指令打散到不同的线程块中就成了整个GPU任务队列执行过程中一个非常重要的步骤。在以Fermi为代表的传统仲裁体系中,任务会在解码过程之后完成指令的关联性检查,如果指令存在超过一定限度的关联性,为了规避条件分支对性能产生的影响,这些指令会被重新打包以便ALU团簇进行吞吐。在完成这些关联性检查之后,明确执行方向的指令才会被送入流水线中进行执行。为了加快这一过程的速度,Fermi架构为这个过程提供了Multiport Post decode Queue以及对应Register的硬件支持。这部分工作执行的场所以及Multiport Post decode Queue和对应Register所处的位置,就在SM单元的Logic controller。
在Kepler中,这一传统的过程发生了巨大的变化,任务会在进入GPU之前先根据Sched.info进行关联度判断以及选择,然后直接进行解码并被送入流水线中完成后续处理。传统的关联性检查以及指令重组等过程被Sched.info-select所取代。在执行过Pre-Scheduling过程之后,指令从解码到执行之间的延迟被大幅降低,整个流水线因此获得了更高的执行效率和复用率。而执行这一过程的场合也不再是SMX单元的Logic controller,它被挪到了我们熟悉的X86处理器,也就是你主板上插着的那颗CPU中。
为了了解Scheduling过程变化所带来的影响,同时收集Kepler架构对处理器依赖程度的相关数据,我们在4月中旬进行了GTX680处理器依赖性测试。
通过对关联性以及任务控制效率较为敏感的Fluid dynamics simulation以及CSM等测试,我们发现Kepler对处理器的依赖程度的确要高于Fermi。既然将Scheduling过程从Logic controller或者说GPU内部纯硬件执行转化成到处理器软件执行会加重GPU对处理器性能的依赖程度,那为何NVIDIA还要对Scheduling过程进行这样的改进呢?
推荐经销商