返回

第472节:赞美愚者

首页
关灯
护眼
字:
大
中
小
上一页 回目录 下一章 进书架
    第472节:赞美愚者 (第2/2页)

。」

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

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

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

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

    「坐吧。」

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

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

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

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

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

    「嗯。」

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

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

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

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

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

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

    二十分钟後

    「不打了。」

    沈亢郁闷地把滑鼠一推。

    连输七把,打个屁。

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

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

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

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

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

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

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

    「输给了伺服器?」

    沈亢纳闷,听不太懂。

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

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

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

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

    「但我看到了。」

    「……」

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

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

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

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

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

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

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

    他都想赞美愚者了。

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

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

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

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

    「什麽路?」

    「放弃预测执行。」

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

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

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

    「为什麽?」

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

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

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

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

    「这样啊……」

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

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

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

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

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

    像独自站在深夜的荒原上,忽然听见远处传来一声极低的、没有人听过的恐怖兽鸣。
上一页 回目录 下一章 存书签