» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

[专题讨论] 谈一谈个人对fast sync和延迟的见解

最近对这个很感兴趣,查了些资料,因为不是专业的人,只能说分享一下尽自己能力理解的情况,有错的地方还请谅解和纠正
碰巧“燕市游徒”分享了其他显卡开启方法,并觉得或许对模拟器有效,所以就在这区分享吧,不放数码区了,那里最近对这类话题好像很反感的样子

一句话总结:fast sync应该是一种相对完美的多重缓冲技术
为什么nv会在这个时候放出这个技术呢?根源估计要从麦克斯韦架构说起,这个架构不但大量增加了内部各环节的缓存(缓冲?)区,而且还加入了一项技术——重复利用帧缓存的内容。使得fast sync有了完全的硬件基础,同时这些东西还被用于帕斯卡这代的VR等内容的性能提升上(重复利用帧缓存的内容,理论上极限可以提速接近一倍)

下面我用一个理想化的例子(同一个显卡渲染A、B、C、D四帧画面)去详解一般情况、三重缓冲以及fast sync的运作模式,同时解释延迟的产生
显示器我们先从最普通的60Hz刷新率说起,也就是说其图像刷新周期是16ms(不是液晶的延迟)

首先是一般情况下,显卡开始处理A帧
显示器刷新周期1,A帧已经处理完成了,正常刷新,这时延迟是16ms,开始处理B帧
显示器刷新周期2,B帧没有处理完,如果这时强制刷新则画面会出现撕裂,所以我们开启垂直同步避免画面撕裂(下同),因为垂直同步的关系显示器继续刷新A帧的图像
显示器刷新周期3,B帧已经处理完成了,正常刷新,这时延迟是33ms(2个刷新周期才出这帧图像),开始处理C帧
显示器刷新周期4,C帧没有处理完,继续刷新B帧图像
显示器刷新周期5,C帧没有处理完,继续刷新B帧图像
显示器刷新周期6,C帧没有处理完,继续刷新B帧图像
显示器刷新周期7,C帧已经处理完成了,正常刷新,这时延迟是67ms(4个刷新周期才出这帧图像),开始处理D帧
显示器刷新周期8,D帧没有处理完,继续刷新C帧图像
显示器刷新周期9,D帧已经处理完成了,正常刷新,这时延迟是33ms(2个刷新周期才出这帧图像)
A、B、C、D四帧分别需要1、2、4、2个显示器刷新周期去处理,延迟分别是16ms,33ms,67ms,33ms

接下来我们看三重缓冲,显卡开始处理A、B两帧
显示器刷新周期1,A帧已经处理完成了,正常刷新,这时延迟是16ms,原A帧的缓冲开始处理C帧
显示器刷新周期2,B帧没有处理完(虽然2个显示器刷新周期能处理好B帧,但前1周期部分性能用于处理A帧了),继续刷新A帧的图像。这里为方便大家理解加入一个理想化的每帧已处理比例(B:0.8  ;  C:0.2)
显示器刷新周期3,B帧已经处理完成了,正常刷新,这时延迟是33ms,原B帧的缓冲开始处理D帧。(B:1.0  ;  C:0.5  ; D:0.0)
显示器刷新周期4,C帧没有处理完,继续刷新B帧图像。(C:0.7  ;  D:0.4)
显示器刷新周期5,C帧没有处理完,继续刷新B帧图像。(C:0.9  ;  D:0.8)
显示器刷新周期6,C帧已经处理完成了,正常刷新,这时延迟是50ms。(C:1.0  ;  D:1.0)
显示器刷新周期7,D帧已经处理完成了,正常刷新,这时延迟是16ms
延迟分别是16ms,33ms,50ms,16ms

最后我们看fast sync,A、B、C、D四帧全部进入处理列队
显示器刷新周期1,A帧已经处理完成了,正常刷新,这时延迟是16ms
显示器刷新周期2,B帧已经处理完成了(重复利用A帧,有40%以上内容不需要处理),正常刷新,这时延迟是16ms
显示器刷新周期3,D帧已经处理完成,刷新D帧图像,C帧因为没及时完成直接抛弃(三重缓冲D帧比C帧先完成也会抛弃C帧),这时延迟是16ms
延迟分别是16ms,16ms,16ms

优劣通过这个理想化的例子很明显的展示了出来
至于不是这些架构的显卡开启fast sync我就不太清楚是怎么运作的了,估计效果比较接近三重缓冲的情况,但即便是这样也很好了,因为不是什么游戏或模拟器都支持三重缓冲的,理论上A卡应该也能做到这样,看看AMD会不会跟进这个

接下来顺便聊一聊相关的其他技术

144Hz液晶显示器
上面的例子我们不难发现A帧说不定连一半的显示器刷新周期都不到就能处理完成,然而有显示器刷新周期的限制在依然要等显示器刷新,这时144Hz就有用了,7ms的刷新周期让部分帧延迟进一步降低

G-sync
这个和上面是完全不同的东西,上面所有情况都是显示器刷新周期固定不变,显卡去配合显示器。而G-sync则是改变显示器刷新周期去配合显卡
比如一个游戏能够完全稳定在59帧不变,在普通显示器上开垂直同步,其延迟是33ms,而在G-sync显示器上则是17ms

FreeSync
FreeSync和G-sync是一样的,但硬件标准不同,FreeSync只能在显示器可能的范围内实现G-sync的功能而已


TOP

那种技术应该是和隐面消除技术同源的,更具体我也不懂了
至于三重缓冲。一般的情况下缓冲有两个,一个用于存储处理中的图像,完成后复制到第二个缓冲中,第二个缓冲和显示器做直接交换,三重缓冲多加一个用于存储处理中图像的缓冲,所以才有“三”的说法



TOP

感谢“SONIC3D”指点,不过单靠我个人估计还是想不通,是指我理解的“三重缓冲会弃帧“这点吗?
比如wiki那张图的第5个B的处理时间如果是图中的3倍,然后C已经完成了,那么第三次刷新周期是怎么运作的?
而常见比较容易理解的fast sync和三重缓冲最重要的区别描述是,fast sync会拾取最接近实际时间点的一帧输出

模拟器发招不会比实机延迟低吧,这里只是图形处理和显示器输出的延迟,另外还有模拟器本身的延迟、液晶显示器的延迟以及输入设备的延迟还没算进去


TOP

引用:
原帖由 SONIC3D 于 2016-8-11 19:16 发表
1.你Windows上应用里或驱动里启用三重缓冲时,当渲染结果占用了显示buffer以外的2个buffer后,如果vsync还没有发生,那么就阻塞了,不再进行下一个周期的渲染。(但是严格来说3dfx的三缓冲不是这样做,而是像你说 ...
再次感谢解答,我居然忽视那张图的三重缓冲依然是顺序执行的,难怪怎么想都想不通错在哪里,我一直以为三重缓冲是同时执行的

TOP

我记得UBI接手后的孤岛惊魂就能设置多5个缓冲(不知道是不是每一款都可以)
不过现在理解了再看,用处不是很大啊,多加1个缓冲对空闲的利用率已经非常高了,再继续增加估计也就是对帧生成时间极其不稳定的游戏有些用而已,可像辐射4这种游戏又不一定就给你这样的设置,这时fast sync就有用了

TOP

引用:
原帖由 xu33 于 2016-8-12 17:29 发表
posted by wap, platform: Chrome
970可以开fast sync吗
开启方法还是看“燕市游徒”的贴子吧
http://club.tgfcer.com/thread-7236320-1-1.html

TOP

发新话题
     
官方公众号及微博