use*_*108 1 cuda gpgpu opencl branch-prediction
当波前执行时,它提供细粒度多线程.其中一个后果是没有分支预测要求,如下面的幻灯片所示:
但我无法理解这一点.有人可以用一种简单的方式解释这个吗?
分支在执行指令流时引入了显着的延迟.如果处理器不支持推测性执行,则在执行分支条件之前不允许执行任何指令.如果采用分支,则处理器需要获取引入额外延迟的新指令行.如果未采用分支,则可以继续执行.在深度管道上,条件的评估可以引入10-20个循环.分支预测和推测执行允许处理器继续执行附加指令或者如果采用分支则开始提前获取指令.如果分支预测不正确,则必须抛出(回滚)分支之后的所有指令.
分支预测硬件在面积方面通常是昂贵的,但即使是基本的分支预测(可能采用而非可能采用)也可以显着改善IPC.
GPU至少有三个原因不倾向于实现分支预测:
分支预测的目标是通过推测执行指令来改进IPC,而不是等待条件结果和可能的附加指令获取.GPU旨在通过在多个执行线程之间切换来隐藏延迟.当warp/wavefront等待确定分支条件的结果时,可以发出其他warp/wavefronts来隐藏延迟.
分支历史表在面积方面是昂贵的.
投机执行在面积方面是昂贵的.
归档时间: |
|
查看次数: |
617 次 |
最近记录: |