全球首个运行于 RISC-V 平台的 Windows x64 软件模拟器发布

时间:2023-02-20 07:17:56

在最新的 Wine-CE 8.2 更新中,首次添加了针对RISC-V的支持,因此Wine-CE也成为全球首个运行于RISC-V平台的Windows x64软件模拟器。

近些年来,在半导体产业受到地缘政治影响的背景下,以开放性著称的RISC-V芯片指令集架构的影响力与日俱增。RISC-V指令集拥有基于开源、开放、共建、共治模式发展的全球生态,相较于其它指令集而言,其可以不受某个商业或政治实体控制,且无须支付授权费即可使用。因此,其被主导自主可控领域的企业和中小型企业所青睐。

然而,作为一款新兴的指令集,RISC-V的缺陷也显而易见,尤其是软件生态。即使由于上述优势,相关企业可以大幅降低生产过程中的风险和成本,但倘若没有足量可供运行的软件,那么实现RISC-V指令集崛起的梦想也若水中之月,可望而不可即。另一方面,在现代信息技术产业中,软件的开发成本远胜于硬件采购成本。且软件产业在全球化分工合作的背景下,单个软件的指令架构移植工作往往要涉及多个商业实体间的沟通合作,尤其是在RISC-V在市场占有率还不具备优势的前提下,其本不良好的私有软件生态只会雪上加霜。为了打破低硬件市场占有率导致低软件市场占有率的恶性循环,提升RISC-V指令集硬件市场占有率是当务之急的工作。

在此背景下,通过兼容高市场占有率的Windows软件来快速提升RISC-V硬件市场占有率不失为一条可行的解决方案。因此,Wine的以跨指令集架构为特色的衍生版Wine CE, 在最新的8.2更新中,提供了针对RISC-V Linux的支持工作。目前Wine CE RISC-V可运行Windows x64和ARM64指令架构的64位软件(32位软件因为BUG的缘故在当前版本暂未支持),并已经在StarFive的VisionFive2单板计算机上成功运行。

基于QEMU用户模式在RISC-V平台上模拟x86_64以往遇到2个BUG:RISC-V主机端代码生成存在生成非法指令的BUG、x86客户端由于误读Intel文档导致错误GDT错误实现的BUG。前者在2023年2月的最新主分支更新代码中得到解决,后者在Wine CE作者提交的暂未合入主分支的修复补丁中也得到解决。因此借着Wine发布8.2的契机,Wine CE在迅速跟进Wine发布最新分支的同时,将QEMU用户模式的BUG修复代码引入。因此,Wine CE成为全球首个运行于RISC-V平台的Windows x64/ARM64软件模拟器。

和其它跨指令集架构模拟器相比,Wine CE创新性的将QEMU TCG二进制翻译层置于基于本机指令集架构的Wine运行时系统和基于客户端指令集架构的Windows PE可执行文件之间,且Wine运行时系统和Windows PE可执行文件之间通过协程进行双向交互。因此,Wine CE无需以virtio-gpu、virgl为代表的客户端驱动,可直接通过Wine运行时系统直接调用本机的接口和库。换句话说,整个Wine CE可以看作一个脚本解释器,客户端指令集代码可以看作脚本,QEMU通过加载Wine的本机指令集架构动态链接库,在翻译执行客户端指令集代码的同时,调用Wine的动态链接库中的函数,完成绘制等行为的操作。因此,Wine CE无需chroot操作,也无需root权限即可运行。

目前,Wine CE作者在视频网站哔哩哔哩上发布了Wine CE在RISC-V平台上的演示视频,网址如下:

https://www.bilibili.com/video/BV1ao4y1e7To