最近不少人讨论硬件升级的许多方案,大家喜欢讨论主板对CPU的超频支持,喜欢讨论显卡和硬盘带的动带不动一款游戏,喜欢讨论怎么魔改设置突破原有的性能等等……

考虑到 Windows 11 总是携带了大量和打游戏没什么关系缺非常占用资源的组件,不少人都喜欢魔改不少 Windows 的设置,甚至会出现社区里自己的游戏用 Windows 发行版,比如 AtlasOS 等。

目前的魔改大多专注于删除不必要的组件(例如:打印机服务等),关闭不必要的安全功能(例如:VBS)等。这么多奇怪的魔改,怎么感觉……似乎微软对游戏PC并不操心?怎么装电脑这件事,是不是微软自己没有谱?让微软的员工帮你组装一台电脑,究竟会得到什么结果呢?

file

构建一个有趣的情景

在一个虚假的场景下,有一位土豪。他想得到一台深度优化的游戏PC,用来玩大部分游戏。

他打算找微软为他服务。于是他出资一个亿,召集了100位微软首席工程师,给了一年时间,要求他们打造一台小巧强悍、精致完善、不会出问题、单价还不高的游戏设备,能运行他要求的游戏列表。

那么一年时间后,他会得到什么?

在这里可以试图脑洞大开一下……

什么样子的硬件?

它应该是个小机箱

传统厂商组装的电脑会看到里面有大量的空余空间。这些空间对于一个精致紧密小巧的设备来说是非常多余的。

file

但是,传统的ITX机箱组装方法又需要精心挑选的机箱主板,往往也可能产生散热死角或布线难题。

如果是深度定制,那么很可能主板、内存、显卡、硬盘都焊在了一个集成度非常高的电路板上。微软可能会找AMD定制一块专门为这个架构优化过的显卡,定制的频率刚刚好的内存,还有一个可能未必是普通硬盘的硬盘。这可以极大的提高空间的利用率,并且缩小机器的体积。

它应该性能刚好足够

注意:优秀的硬件应当是刚好能满足计算需求的硬件,而不是最强的硬件。对于专有场景的定制优化来说,尤其是这样:能带动就好了,不必上最好。

在精致小巧的设备中,使用最强的硬件可能还会带来额外的功耗和散热负担,并且增加成本。显然,这里需要考虑大多数的游戏性能,这些专家们很可能会专门定做硬件。

file

例如:当这个设备需要考虑到一些基于Hypervisor的应用管理特性,就可以专门定做一块对Hypervisor支持的较好的CPU。而不需要考虑某些特定的工作流,例如CUDA,就可以直接砍掉。硬件的定做可以完全服务于业务场景,而业务场景已知的情况下,没用的功能就可以统统砍掉了。

最终这个机器里的一切应该都体现一个关键字:刚刚好。它没有一块电阻是多余的,所有的芯片都是刚刚好需要,能在场景中发挥性能,又刚刚好性能足够。

它的功耗应当很低

这个是非常显然的。既然没用的硬件全被阉割了,所有耗电器都已经是为目标的优化的最小集,显然它的功耗会低于几乎市面上所有类似功能的设备,因为市场上其它设备很难选型、定制、阉割的如此恰到好处。

它会给你的感觉是一个完全体,而不是多个硬件的混搭。

其实这也是为什么,今天我们去购买品牌机,也会发现里面的硬件性能并不是最强的,甚至是老一代。这是他们认为,这些设备的使用场景就是商务办公。他们觉得这是企业里用途的刚刚好。

它的散热应当恰到好处

传统 PC 调校散热非常玄学。很难可视化。往往只能靠堆很多风扇,又很容易散热过剩或不足:风扇几乎不转,硬件却很热;风扇狂转,硬件却根本不热等。

既然硬件的定制已经深度优化到了每个角落,散热不会具有太大挑战性。

毕竟工艺水平并没有突破人类的芯片制程的极限,采用的硬件虽然经过定制,但也没有删除掉最重要的计算单元,产热是必然。

file

但是,对于极限定制的机器,散热的优化空间就会显得非常充足:设计硬件的时候,工程师可以精心的模拟风道,甚至可以对不同的风扇在不同的负载下使用不同的转速曲线,来得到一个完美的噪音和散热的平衡。

在这种平衡下,散热会刚刚好的让机器的性能得到发挥,而性能的发挥也是刚刚好能保证需要运行的游戏跑到显示器的帧数和保证硬件的健康。风扇没有一圈儿的旋转是没有意义的。

少转一圈儿,就比显示器少追一帧(开玩笑 狗头)。

file

一个深度定制的系统

在这一步之前,似乎我们还是停留在:组装一台深度定制优化的ITX小机箱。

但是,硬件的优化都是为了能够刚好运行里面的负载。而最先面对的负载就是操作系统。

传统操作系统,无论是 Windows,Linux 还是 Mac OS,其设置选项、调整空间虽然很大,但是毕竟这些操作系统是面向所有可能场景的通用计算,普通用户对其优化空间本身就很有限。另外,尤其是很多优化的方法根本没有设置可找,而是涉及到源代码改动,甚至需要你推出专门的系统发行版的。这对于没有实力的团队来说可能会毫无方法。

就像为什么自己安装了 Windows 还得自己装驱动改设置?Windows 自己也猜不出来你究竟是用什么硬件跑的。

后面,我们讨论的重点就会变成系统级性能调优,只是这种调优是面向我们特种硬件的。而面向特种硬件,又像我说的,优化可以登峰造极。

这个系统也应当具有一系列特点,例如:始终很快、非常安全、容易使用、应用好用等。我们可以详细讨论一下。

这个系统应当“看起来很快”

当我们已经知道设备的目标使用场景后,优化就会非常有针对性。

例如:如果你已经确定,此设备是个台式设备,它大部分情况下会连接电源,那么“关机”功能完全就可以由“睡眠”来代替。我们可以在睡眠的时候将功耗降低到极低。

file

计算机的睡眠状态通常被分为多个级别,例如S1,S2,S3。在S3状态下,计算机会关闭大部分设备,例如CPU、显示器和硬盘驱动器,但仍然保持一些设备和内存的电源供应,以便能快速恢复操作系统和应用程序。

S3状态的特点就是功耗极低,拔掉电源线也不会损伤硬盘,但是仍然可以在非常短的时间内开机。反正我们知道使用场景,直接让睡眠代替关机,让唤醒代替开机,就会得到一个:这个设备秒开秒关的假象

这个系统应当非常易用

既然是针对场景设计的操作系统,大部分功能都可以被阉割,例如传统的设置。我们完全不需要让用户去修改系统的设置,例如:分区、驱动、可管理性等。直接全删了设置就完事儿了。就让他设置个语言、输入法、时间、IP地址什么的。

我们可以直接在合适的显示器上开启自动HDR、开启10bit,自动设置到最佳的分辨率,也可以开启可变分辨率支持。

file

最终交给用户手里的应当就是:插一根电源,插一根视频,按下开机,瞬间显示器支持的功能就完成了评估,可以以最佳状态带动显示器了。

如此完美的运行应用?

别忘了,对于专有的业务场景构建设备,比如游戏场景,没人会在乎系统。甚至大家恨不得让应用运行的时候能把系统关掉,来把计算资源都留给应用程序。

毕竟这种设备诞生的目的就是单一场景,它抛弃了通用场景,那么面向应用的有优化可以登峰造极!

当我们构建一个理想设备的时候,所有的开发商都会为这个设备进行独有的优化,反正我知道这是什么设备。

登峰造极:反正我知道这是什么设备

在专有设备上开发应用和通用设备上开发应用的许多思路完全不同。这是建立在一个基础:反正我知道这是什么设备。因此所以兼容的考虑可以统统抛弃。

例如:对于应用开发商来说,你已经知道了硬件的算力如何,那就尽管尽可能榨干即可。不需要提供给用户复杂的显示设置:分辨率、DLSS、纹理、渲染距离、光照……应用的开发商早就应该在开发的时候调试好它的最佳画质、最佳键位设置等。

file

应用的使用过程中,完全找不到繁琐的设置,它永远会以最佳的状态、体验运行,并且还……永不崩溃。

永不崩溃:毕竟开发者就是在上面开发的

永不崩溃?你在开玩笑吧?代码里写个空指针不就崩溃了?

几乎所有游戏的崩溃都伴随着不充分的测试。而测试的难度正是在于五花八门的硬件门类。你永远不知道匪夷所思的硬件可能算出什么奇怪的结果。

file

而如果是面向专有硬件进行针对性应用优化,那么它在开发者手中运行的结果,和在用户手中运行的结果一定是一样的。不会出现:“明明刚才在我电脑上还是好的”的这种辩解。

测试人员只需要测试一次,没有问题,递交到用户手中的一定没有问题。这就是面向专有设备计算的优势。

而这种优势甚至可以演化到作弊……

作弊:反正我知道你要干什么

对于许多场景来说,专有设备的优化是可以“作弊”的。这种作弊并不是什么坏事,而是讨巧。反正我知道你要干什么。

例如:一个游戏的过场动画在传统硬件上都是实时渲染的宏大场面。这是考虑到游戏可能在各种奇怪的设备上运行,并且尽可能缩小文件体积。

而如果我们已经知道了显示器的比例一定是16:9,那么对于这台设备而言,我们可以直接预先拍摄好一段电影CG,然后在这里播放。这样它直接就可以在算力不高的情况下仍然享受到非常好的体验。

file

例如:如果我们知道这个设备工作时一定会联网,那么为了节省空间,甚至可以在即将通这一关前自动开始预下载这段视频,或是在通关这一关后删除掉这段视频。优化的空间简直有无限潜力。

省心

传统的电脑组装伴随着大量的体力活、调校、背景知识等。即使全部装配好了,也会面临繁杂的:进度同步、一大堆启动器、账号管理等。

对于一个专业玩家,这些还可以接受。但是对于非专业用户,他可能只是单纯的想体验100款大作,却需要注册那么多的账号,管理那么多设置、启动器,想想就令人头大。

file

而当我们已经有能力喊着开发商来针对平台优化的时候,一切都变了。

我们可以要求他们必须使用某种固定的交互逻辑,例如:WASD一定是移动玩家;鼠标一定是修改视野;玩家移动速度必须控制到3米每秒;跳跃键必须绑定空格;可视角度必须是85度等等,来让所有游戏的操作手感尽可能贴近,而不打破固定的设备体验

不只是游戏交互,应用也完全可以使用系统自带的集成身份验证来管理账号,并且要求开发者不得使用第三方启动器、作弊检测器,来统一规范应用的范式,从而真正得到一个:打开谁就能用谁,什么都不操心的体验。

甚至,用户还能享受到一个附属福利:永远没有病毒。

反正我知道我要运行谁

通用计算平台是永远无法实现没有病毒的目标的。

操作系统不知道你究竟是要真的运行一个奇怪的应用还是不小心运行了一个应用。病毒和普通应用程序调用的API可能完全相同(例如阅读一个文件),而病毒的开发者的价值观决定了这是个恶意的访问。

而专有硬件设备仍然不同。既然设备、用户、应用的开发者都知道用户究竟是想运行什么,完全可以对应用的开发者进行数字签名保护:直接禁止除了这几位开发者开发的之外所有应用的运行。

恶意的开发者不会出现在白名单中,这个简单的方法就可以实现专有硬件彻底不会感染病毒。原则就是:“反正都知道设备要运行谁。”

不过,既然“你都知道你要运行谁”,还能将优化进一步登峰造极:虚拟化。

享受虚拟化

定制游戏电脑和普通家用电脑最大的区别就是:定制游戏电脑的使用场景下,几乎不会出现同时运行两个游戏的场景。而普通家用电脑同时运行多个应用司空见惯。

那么不妨我们干脆砍掉同时运行多个应用的功能,就宣称:这个设备始终只能运行一款游戏。

那么这种情况下,这款游戏可以直接独占整个硬件,来获得极高的性能。而用户可能又要在多个游戏之间切换……那其实最简单方法正如小标题所述:虚拟化。

file

让每个游戏都跑在虚拟机里?不,不同于传统的虚拟化,我们讨论的是专用定制硬件,这里优化空间仍然很多。

  1. 使用 Hypervisor

使用 Hypervisor 虚拟化,而虚拟化的隔离算力下,只运行一款游戏。这是为了保证我们不会同时开启多份系统内核,而只会有一个系统内核在运行(容器)。这就已经避免了虚拟机最大的缺点:重复运行系统内核。

  1. 将硬件直通

硬件直通技术已经是任何一个 Hypervisor 的基本功能:任何硬件都会将自己映射成内存的一段地址。只需要把这段地址直接交给一个 Hypervisor,里面的算力就可以直接操作真实的硬件而不需要母系统翻译。使用 Hypervisor 可以得到和直接运行完全相同的性能。

file

  1. 将游戏进度存储在任意地点

就像我说的,专有硬件一次只能运行一个游戏,那么哪个游戏运行,就开启哪个游戏的 Hypervisor ,然后把显卡直通进去,此时此刻游戏享受到的是一块独占的、完整的、物理的显卡。显卡绘制完成后会直奔显示器,系统根本没有机会插手渲染,性能甚至可能比没有虚拟化更好。

file

但是最大的优势在于:Hypervisor 可以像虚拟机一样休眠,也就是将内存、显存等数据直接落盘,然后暂时不玩的游戏就完全不占用重要的计算设备。游戏的退出也不是kill进程,而是将Hypervisor休眠。

打开一个游戏,几乎3秒就完成了加载。你双击电脑桌面上的极品飞车,三秒后,已经在开车了。

而且游戏的启动过程根本不需要像传统方法那样,开启动器、加载、登录、进游戏、再加载、开始做任务。

这似乎很难想象,但是得到的结果就是:我们用稍微慢一点的游戏切换速度,换来了:无论你打开多少个应用,系统都不会卡,因为始终只有一个应用是在运行的,而其他都被“暂停”了。

这种设备的硬件性能无需多好,但是体验就可以很好。专有硬件的性能优化是可以登峰造极,各种技术都可以往上用。DMA就是一个例子。

  1. DMA

file

同样的,还是那个观点:专有硬件的性能优化是可以登峰造极,DMA就是一个例子。

DMA允许外设(如显卡)直接访问系统内存,而无需通过CPU。在DMA模式下,外设可以直接读写内存,从而提高数据传输速度和系统性能。对于显卡而言,使用DMA技术可以让它直接从硬盘读取数据并将其渲染到屏幕上,而无需通过CPU进行中转,从而提高了图形处理的效率。使用DMA,可以在游戏设备上真的实现:贴图纹理直奔显卡。

还有什么东西能优化来着?对:硬盘。

  1. 硬盘的硬件加速虚拟化

别忘了,我们是专有硬件,硬盘也是定制的。

既然硬盘是定制的,我们就可以放弃传统硬盘的思路了!就像上面提到的DMA可以提供极高的显卡访问硬盘的性能。那么我们干脆让硬盘在硬件层面支持动态分区,使用类似 mdev 或 SRIOV 的技术,暴露给多个PCIE设备,再直接将 PCIE 设备直通 Hypervisor,这是真的登峰造极,但结果就是:

主系统的分区可能和游戏是独立的,每个游戏都是一个独立的系统分区。这种分区不是传统的逻辑分区,而是基于硬件加速的磁盘隔离,将隔离后独立的虚拟NVME控制器(这是一个硬件)直接穿透到 Hypervisor 里,让游戏只能摸到自己的盘,而自己的盘里只有游戏本身而没有系统文件。

file

这种设计下,虽然我们使用了虚拟化,但是根本没有使用任何虚拟磁盘 VHD 文件,而是将隔离后的物理磁盘直接穿透给 Hypervisor,来享受到和物理磁盘完全相同的性能。结合 DMA,这种加载速度应该快的让我难以想象。

当然,代价就是用户很难自己扩容。

录屏和直播

前面介绍的核心理念就是:专有计算设备和通用计算设备的特点就是优化可以登峰造极,但是限制了使用场景。另一个很好的例子就是屏幕录制、直播。

最差劲的屏幕录制方法很可能是在不停截图然后再拼成视频。以至于很多人对录屏的印象停留在了:非常占用资源。

显然,现在的通用计算设备早就支持更加合理的录屏:它们完全可以使用 GPU 来对录屏、直播等进行硬件加速,让显卡直接把要输出的画面进行数据编解码。但是这样显然需要将屏幕录制的内容不停写入硬盘,又会占用磁盘性能。

对于专有硬件,这里的优化就可以非常有趣:它可以使用独立的小芯片,这个小芯片有视频编解码和存储功能,将其制作成一个HDMI中间件,来自动截获路过的所有信号,录制到芯片内存储空间里,从而让录屏这个事情和操作系统的计算毫无关系。

file

显然你会产生一万个问题:空间满了怎么办?

直播显然没有这种问题,它完全不需要考虑磁盘。

游戏的屏幕录制这个固定的使用场景下,几乎不会出现长时间的录制,而更多的是精彩瞬间或是有趣瞬间的录制。传统通用计算下,用户很难提前知道精彩瞬间的发生而错过录制。但是专有计算就不一样:它可以始终都在录制,而轮转芯片内部的空间,自动覆写掉最古老的录制内容。这样你始终可以获取到刚刚发生的事情的录像。

file

在这种轮转录制的模式下,玩家可以尽情五杀,都录的妥妥的。随时回看,还不占用显卡算力。

实际上,“始终录制”功能,对于今天许多游戏显卡都已经支持的很好,并且并不像传统的落盘录制那样损失性能了。毕竟打游戏的时候,大概率视频编解码芯片是闲着的。

回顾主题

是啊,我们本来的问题是什么来着?

假如你是一位土豪,想得到一台深度优化的游戏PC,用来玩大部分游戏。他打算找微软为他服务。于是他出资一个亿,召集了100位微软首席工程师,给了一年时间,要求他们打造一台小巧强悍、精致完善、不会出问题、单价还不高的游戏设备,能运行他要求的游戏列表。

看起来我们差不多构想出来了这样一个设备。

它是ITX机箱,非常小巧,没有一丁点儿空余空间。它具有强悍的CPU、显卡,能满足几乎所有游戏的运行要求。它功耗很低,低于市场上所有游戏电脑。它噪音很小,风道合理,发热也不大。最重要的是它非常好用:1秒开机,自动适配各种显示器。系统都是深度优化定制的,运行非常稳定,绝对不会崩溃、病毒。只需要一个号就可以登录所有游戏,不需要下载启动器。应用完全不会卡死,而且始终能看到我最近玩游戏的精彩瞬间……

这个设备应该很贵?实际上它一旦量产,单台成本应该很低。而且因为怎么用都用不坏,二手卖出去还特么不贬值……可能一台只需要3000多块,而同性能的游戏电脑可能需要五位数。

是啊,我想你已经看懂了我要描述什么了。

这个设备,现在有一个响亮的名字:

Xbox。

尾声

我经常惊叹Xbox的设计,它的优化真的非常讨巧、作弊,但是体验就是很好。每次看到这个,我就对我自己的调教很惭愧,毕竟我再怎么调教,最后的结果无非也是无限趋向于它。

file

但这也体现着一件事:专有设备的优化是可以登峰造极的。

我以前经常拿自己安装的nginx和专业的F5,A10去比性能,真比不过的。人家那可是优化到电路的,夸张地说,没有一个电阻是多余的。许多功能很可能是直接在网卡硬件里实现的。

越是用通用的计算平台,算专用的事情,越不划算的。就像公有云挖矿一样血亏。同样的,台式机打游戏,也是花了五位数的价格,体验了Xbox 2000块钱的体验。毕竟台式机这个东西本质上就是通用计算,啥都能跑,能编程,能重装系统,能打游戏,能挖矿。

如果你固定一下使用场景,会发现瞬间这东西优化空间巨大无比。这也是为什么许多数据中心直到今天都在使用物理机。

物理机缺点那么多,但大公司就是喜欢跑在物理机上,就不上虚拟机。物理机的特点还是好针对优化,毕竟几乎所有虚拟化计算平台都是通用计算,而就像上面所说,通用计算跑专用内容,如同用家庭主机来打游戏,往往带来的收益是可管理性、可拓展性和一些附属功能,缺陷就是性价比和优化空间。

物理机可以针对上一些类似FPGA的东西,对业务场景定制优化,里面的硬件可以删一些功能例如Hypevisor,加一些功能例如 SRIOV、RDMA等。

file

最极端的例子就是挖矿:矿老板的矿场都建在四川水电站旁边,没机箱的,一个主板,一堆卡,就开始挖了。无尘?低噪音?散热?没关系。这就是最高经济效益的结果。