文章18
标签6
分类2

骁龙845吃上Windows on ARM后

背景资料

何为骁龙845(Snapdragon 845/850, Refer Wikipedia):

2017年5月5日,高通官网公布新处理器的命名方案SDM845,为首个采用ARMv8.2指令集的Cortex-A75和A55修改后的Kryo 385 Gold / Silver 核心的CPU的骁龙800系列的系统单片机,CPU部分特别新增了三级缓存,搭配的存储器也多了系统缓存。Geekbench4跑分的部分,单核部分约2500分,多核部分为8500分。

2018年6月,高通于台北国际电脑展览会发表骁龙850,为设计给Windows系统的笔记本电脑处理器,规格大致上为845的高频版本。比起之前采用高通骁龙835处理器的Windows系统笔记本电脑有不少的性能提升。骁龙850相较于手机的骁龙845运算速度再快上30%,且使用时间将高达25小时,人工智能性能同时也成长三倍,最高支持网络将达到1.2 Gbps,将为准5G连网速度。骁龙850移动平台可以让用户体验更轻薄、携带便利的无散热风扇设计。同时骁龙850芯片可支持设备内置的AI体验,而用户能体验到相机、语音、电池续航力等方面的提升。高通本次携手微软Windows 10打造的骁龙850芯片,也可支持微软人工智能语音助理Cortana。

何为 Windows on ARM Refer Wikipedia

2016年12月7日,微软在中国深圳的Windows硬件工程大会上宣布与移动技术公司高通开展合作。微软宣布其在ARM架构设备上使用虚拟机运行Win32应用程序的计划。进行展示的特里·迈尔森在演讲中提到,这一项目将提高基于骁龙处理器的Windows移动设备的生产力,使其能直接运行大多数既有的Windows应用程序,同时这些设备的无线连接、能源消耗方面相比搭载英特尔硬件的设备更优。

2017年12月,微软与高通正式发布了Windows 10 on ARM以及搭载Snapdragon 835处理器"Always Connected PC"系列的电脑产品。

2018年5月,微软发布了Windows 10 on ARM的操作系统对程序集的支持情况以及目前存在问题的帮助:

2020年,受到苹果电脑M1处理器Mac Mini影响开发仿64位版本已经可以运行64位的程序。

1.硬件驱动仅支持针对ARM64平台编写的驱动程序。
2.针对虚拟机运行的Win32应用程序仅支持仿32位版本,2020年受到苹果电脑M1处理器影响开发仿64位版本已经可以运行64位的程序。
3.使用OpenGL1.1之后的游戏或程序,以及部分使用DRM/反作弊系统的游戏或程序不能运行。
4.输入法、系统辅助软件、以及云存储应用程序可能不能正常工作。
5.不支持针对移动设备开发的APP。(如Windows Phone/Windows Mobile应用)
6.不支持Hyper-V虚拟机。

可行性研究

由上述背景资料可知,骁龙850规格大致上为845的高频版本,且市面上早已有骁龙850的量产机。因此,驱动和ACPI问题我们可以照葫芦画瓢来解决。另外,由于其他SoC没有这种得天独厚的条件(仍有部分7系SoC有类似条件),运行Windows的可行性并不大,但仍可以尝试运行mainline kernel。

事实上,项目 Renegade Project 就致力于完善UEFI和WOA的驱动适配。该post也着重讲这个有趣的项目。
目前该项目主要适配了机型:

OnePlus 6 (enchilada)
OnePlus 6T (fajita)
Xiaomi MIX 3 (perseus)
Xiaomi PocoPhone F1 (beryllium)
Meizu 16th (m1882)
Meizu 16th Plus (m1892)
Smartisan R1 (trident)
BlackShark One (skr-a0)
OPPO Find X (pafm00)
Xiaomi MIX 2S (polaris)
LG G7 (judyln)
Samsung Galaxy S9+ (star2qltechn)
Xiaomi MI 7 (dipper-old)
Xiaomi MI 8 (dipper)
Nubia X (nx616j)
Nokia9 PureView (olympic)
ASUS ZenFone 5Z (draco)
Vivo NEX Dual Display (pd1821)


成果展示

我是在设备Oneplus 6T上运行WOA的,目前一加系与小米系支持相对完善,均支持GPU和蜂窝数据流量的使用,且Synaptics机型触控已进行适配。

首先我针对散热系统进行了改良,选用了主流的半导体制冷片方案,顺便还能作为支架一用。oneplus6T

我的其他工作:驱动签名(时间戳不受信任,合并注册表方可使用):https://github.com/xqymain/WOA-Drivers-signed

进入系统:LoadingTaskmgr

一切就绪后,进行了 DiskMark、Geekbench 和 Cinebench R20的测试,其中Cinebench运行在x86模拟环境下,结果如下:DiskMarkCinbenchR20

此外,日常的使用场景也基本能满足:
WebPageMusicPhotoshopPowerpoint

使用指南

大部分主流软件对WOA的支持不佳。下面列举一些原生支持ARM64的软件:7-zip、Bandizip、Putty、VS Code、MS Office(64位预览版支持较好)、Firefox、VLC。更详细的清单参见这个表格(已废弃)。

关于指令集的支持部分,Windows 11(22000.120)下可以模拟至SSE3。AVX指令集已实测无法调用,其他指令集并没有一一测试。日常使用并没有很大问题。AVXTEST

关于运行和开发环境,目前已测试Native WSL1、Python3.x、Go1.7、OpenJDK16、17和转译 VS2022rc、转译VC++2005-2019运行库,支持情况良好。