首页 > 现代都市 > 我全家都是从贴吧认识的 > 第469节:赞美愚者

第469节:赞美愚者(2/2)

目录

靠窗的位置摆着一张长桌,放着一个台式机,线都顺到桌下,没有一根搭在明面上。显示器边上搁着个黑色机械键盘,键位间隙里不见灰。

再过去是一面书架,从地板顶到天花板,书脊朝外,高低排列严丝合缝。

沈亢粗粗扫一眼,大半是计算机、数学、语言学方向,还有几层是历史、哲学和一些旧发黄的文学刊物。

墙面上几乎没挂东西,只书架旁钉了一块白板,上面贴着几张便签,写着几个公式和两行英文,角落里还粘着一个箭头,指向一句话:「先跑起来,再谈最优。」

桌上唯一显有点「乱」的,是一只透明的玻璃杯,里面剩着半杯凉透的白水。杯壁干净,连个指纹都没有。

沈亢往里走两步,发现床边还搁着一双深蓝色的室内拖鞋,摆笔直,鞋头朝外,像随时准备穿上。

另一边墙角,立着一个黑色网球包,拉链拉到头,手柄朝上。

整个房间安静、克制、理性,像一间被临时借用的学者书房。没有多余的装饰,没有任何能看出情绪波动的东西。

「坐吧。」

萧伯年从外面又拉了一张椅子进来,放到了长桌、那个台式机旁放下。

沈亢则是在打量一圈后,重新把目光放回到了那个台式机上。

「萧教授,你这是把家里的电脑也搬过来了?」

他是去过萧伯年的那个属于他自己的「家」的,也进过萧伯年的书房,里面那个电脑,就跟眼前这个一模一样……哦,不对。

「好像不是那台?」沈亢自己先驳斥了自己之前的结论,「换了一台?」

「嗯。」

萧伯年没闲着,给沈亢搬过来椅子后,又去倒了两杯水来,放到了长桌上,「又配了一套。」

沈亢点点头,觉这很符合萧伯年的个性——谨慎。估摸着,他还是随时做好了那边出事、回去应付的准备的。那样的话,那边没了电脑就是一个惹人怀疑的破绽了,所以,就另外又配了一台电脑。

随后,沈亢不动声色地说道:「那我用你这台电脑吧。」

就算萧伯年有脚本,那也是在这台电脑上,而自己的电脑是没有脚本的。自己用萧伯年的电脑,让萧伯年用自己的电脑,那就可以不用特意说就能杜绝萧伯年开挂了,完美。

萧伯年也没意见,答应了。

两人就这么坐了下来,开机,登陆了各自的帐号,然后去校场开始pk。

二十分钟后

「不打了。」

沈亢郁闷地把鼠标一推。

连输七把,打个屁。

萧教授好像还真没开挂,但自己就是一直输。

他就纳了闷了,《天龙八部》里的pk也没什么技术含量啊,自己跟萧教授的装备石头也都差不多,怎么就一直打不过萧伯年呢?

萧伯年坐在一旁,拿着一杯水喝着,看着他,暗想自己是不是太认真了?要不然,再跟他来一把,故意放水,输给他两把?……

萧伯年正想着,沈亢已经放下了郁闷,眼睛炯炯有神地对着萧伯年看了过去,开口了:「萧教授,我为什么打不过你?可以讲讲吗?」

萧伯年一怔,旋即暗自感叹:不沉浸在失败中,在基于人类基因的固有性失败挫折后,立刻挣脱基因的束缚,第一时间就去探寻原因,随后改正,提升,最终,战胜对手——这就是沈亢这孩子啊。

随后,也完全坦诚,说出了自己一直赢的原因,给沈亢解惑。

「你输,不是因为思路、手速这些原因,而是输给了服务器。」

「输给了服务器?」

沈亢纳闷,听不太懂。

萧伯年解释了起来:「你一直在用『高性能』模式操作。键盘敲飞快,指令一个接一个,全在抢跑。但《天龙八部》的pk不看你按多快,它看的是指令队列。」

「……萧教授,咱们能说人话吗?」

萧伯年一笑,把椅子转了个方向,正面看着沈亢,更详细地解释:「你每按一个技能,客户端要先在本地判断你的状态、目标、冷却,然后才把请求发给服务器。服务器再判断一次,返回结果。这中间有延迟。你按太快,指令在缓冲区里堆着,客户端还在处理上一轮的技能动画。你的操作指令和实际生效的时间之间,有一个空窗。」

「这个空窗里,你的角色会提前泄漏一些信息。比如说,你下一个技能如果是突进,客户端的路径预测就会先动一下。你如果是放控制技能,角色会有一个极短的擡手动画。你自己看不到,或者看到了也没注意。」

「但我看到了。」

「……」

沈亢好像听懂了,「所以萧教授,你是看动作来预判?」

萧伯年点头,又摇头:「严格来说,不是预判,是观察你的客户端在做『预测运行』。」

「它为了快,会提前猜测你要干什么,提前加载一些资源,这些推测在你真正按下技能之前就已经开始了。我只需要盯着那些被提前加载出来的痕迹,就能知道你下一步要按什么。」

沈亢愣了:「这游戏还有这机制?」

「所有复杂的客户端都有。」

萧伯年还举了一些其他的例子:「不一定是游戏,操作系统、浏览器,甚至cpu本身,都是这么工作的。为了快,提前算。这叫预测运行,英文叫pculatv cutn。」

沈亢将信将疑,「好家伙,听起来好玄学啊,cpu还知道我下一步要干什么?听着跟算命一样。」

他都想赞美愚者了。

萧伯年笑了笑:「你觉玄,是因为你只看到了游戏。但在计算机体系结构里,这是早就被验证过的事。cpu内部有个东西叫分支预测器,遇到判断、循环、跳转这些指令,它不会等条件算完再决定走哪条路,而是先猜一条运行。猜对了,省时间;猜错了,就把结果丢掉,回退重来。这就是预测运行。」

沈亢点头:「这个我懂,猜对了赢时间,猜错了白干。」

「对。猜,总比不猜好。就好像同声传译,做同传的人,听到前面几个字,就已经在脑子里预测后面的句子结构了,甚至嘴都开始动了。大多数时候,预测是对的,整场翻译能跟上节奏。偶尔预测错了,停下来纠正一下。但总比一句一句等原话讲完才翻译快多。」

萧伯年似乎谈兴起来了,说完这个例子,又说道:「但你知道吗,英特尔当年不是没想过另一条路。」

「什么路?」

「放弃预测运行。」

萧伯年说:「英特尔和惠普一起搞过一个架构,叫安腾。当时他们的想法很激进:既然预测会猜错,猜错了还要付出代价,那不如干脆不让硬件去猜。把指令调度、并行判断这些事,全部交给编译器。编译器提前把指令排好,cpu照着运行就行,不需要预测,也不需要复杂的乱序运行。」

沈亢听入神:「听上去很合理啊。」

萧伯年点头:「理论上很美好。但安腾最后失败了,而且败很惨。」

「为什么?」

「因为编译器做不到那么聪明。大部分进程运行时候的信息,编译器根本预测不到,比如用户输入什么、网络返回什么、内存里哪个地址会被访问。这些只有运行的时候才知道。」

「硬件预测虽然有猜错的风险,但大部分情况下它猜很快、很准。安腾把宝全押在编译器上,结果很多现实场景下,指令并行度根本排不起来,性能上不去,兼容性又差,最后被am和英特尔自己的86架构打没有还手之力。」

沈亢若有所思:「所以,预测运行虽然会猜错,但还是比不预测强。」

萧伯年说:「对。预测运行是拿『可能猜错的代价』换『大概率猜对的收益』。从工业界最终的胜出结果来看,这条路走对了。」

「这样啊……」

沈亢缓缓点头,若有所思,随后,微微皱眉。

预测运行,猜对了就抢到时间,猜测了就回退……

他怎么感觉,自己好像在哪里听到过这种东西?

而且,为什么,自己的心跳都慢慢加快了?

他听见自己的心跳,不吵,但很重,一下一下,像有人在胸腔深处敲门。

像独自站在深夜的荒原上,忽然听见远处传来一声极低的、没有人听过的恐怖兽鸣。

目录
返回顶部