影视聚合站 科技 文章内容

同样是 ARM,为什么 Mac 会成功,Windows 却输得一败涂地?

发布时间:2022-02-11 19:25:33来源:CSDN

整理|郭露

出品|CSDN(ID:CSDNnews)

由于联邦贸易委员会在去年对于反垄断严加打击,在上个月彭博社发布一篇报道后,有传言称英伟达正准备放弃以400亿美元收购Arm。

本周英伟达正式官宣终止收购Arm。事实上,倘若彼时英伟达和Arm合并,预期将创造出仅次于英特尔的第二个半导体巨头,并在移动和嵌入式处理器领域成为高通和三星的强力对手。除此之外,两者合并后还可能成为微软下一代基于ARM的Windows笔记本电脑的硅供应商等。

因此,许多行业观察家可能想知道:ARM在桌面计算领域的未来是否全是苹果?就目前而言,只有苹果公司通过将其Mac平台过渡到M1,在自己设计的基于ARM的芯片上取得了成功。

图源自ICphoto

WindowsonARM却成绩平平,这是为何?

苹果M1Mac的成功证明,ARM在PC上同样很有前景,可是在此之前的微软也就是WindowsonARM却成绩平平,这是为何?

对此,很多人认为WindowsonARM的主要障碍在于硬件,因为软件以及开发工具都是现成的。然而真正的问题在于开发者工具的兼容问题。例如VisualStudio、VS构建工具和RISC-V等等。倘若不能解决兼容问题,那么WindowsonARM永远无法实现。

微软的开发者工具链在ARM中表现非常糟糕,微软并未提供ARM版本的VisualStudio、VS构建工具、甚至没有MicrosoftVisualC++,他们希望ARM开发者能够在x86主机上交叉编译C++软件或模拟x86。

即使ARM可原生支持.NET以及VSCode,但这对于C++开发者来说意义不大。因为MSVC是封闭源代码,ARM要想获得对MSVC的本机支持只能靠微软。

图源自ICphoto

除此之外,开源问题同样不容乐观。由于MinGV或是MSYS开发环境中无法搭建ARM,因此Windows上无法使用ArmGCC或ArmClange工具链。尽管有部分功能能够添加原生ARM支持,但目前还无法使用。Arm官网中可以下载用于x86的MinGVGCC,并为Arm设备进行交叉编译。如果只有用竞品才能在Windows上编译自己的产品,那么这的确能够说明一些问题。

另一个在Windows中流行的C++编译器是英特尔C++编译器(ICC),但它并不能在ARM上使用,并且必须要安装VisualStudio。也就是说,4个流行的C++编译器均不能用于ARMWindows。

可能许多人都不了解为编译器提供原生ARM支持的意义所在。在为手机或游戏开发软件时,有许多开发者已经从自己的电脑交叉编译到其他设备中,那为什么不能交叉编译到ARMWindows设备上呢?其实这是可行的,但是不好用。

如果Windows电脑不能原生支持编译器,并且需要其他电脑交叉编译二进制文件/可执行文件,那么这就和手机没什么区别,因为开发者不能在同一设备上进行开发测试。不同之处在于手机和游戏机并不是开发平台。虽然手机可以写代码,但这种情况并不多见。

除此之外,WindowsforARM的另外一个缺点在于它不支持OpenGL以及Vulkan。如果你用的是Vulkan,就算你设置了交叉编译工具链也不方便。如果你使用的是OpenGL程序,你最好转为DirectX。

微软的要求很明确,如果要用到新的ARMWindows平台,就必须要用他们的专业API。同样,PlayStation、Xbox、Switch和iPhone要求开发者使用专有的图形API,但他们都不能运行编译器,因此开发者必须从另一台设备进行交叉编译。开发者应当清楚:WindowsforARM不能运行专业的图形API或是编译器,不能用作专业的开发平台。

用户:微软逼我选择x86

由于开发者在ARMWindows上的体验较差,他们会选择使用x86,如此反复,ArmWindows永远不会达到和x86相同级别的支持,而使用ARMWindows的人也会越来越少。打破这一循环的方法就是让VisualStudio等主要开发者工具能够支持ARM。

相比之下,ARM对于macOS以及Linux上的开发者工具的支持要好得多。GCC、Clang和Python可完美支持ARM。开发者可以下载这些开发工具的本地版本并进行本地编译,与传统的模式没有任何不同。

但如果苹果在没有移植Clang并且不支持OpenGL的情况下就发布ARMmacOS同样是个灾难。在这种情况下,开发者必须使用旧的x86Mac进行开发并为ARMMac进行交叉编译。而这势必会引起轩然大波,开发者会担心苹果是在把macOS转变为iOS,如果不能编译自己的软件,也就不能运行自己的软件。这样和Windows没什么区别。

从C++开发者的角度来看,可能Linux对于RISC-V的支持比Windows对于ARM的支持更好。RISC-V是一种全新的开源CPU架构,但目前还无法使用。RISC-V上的Linux体验一般,不过仍有一个可用的编译器,因此开发者可以在另一台设备上使用本机软件进行开发,而无需交叉编译。从这一点来说WindowsforARM是更为逊色的。

微软在ARM设备上的首次尝试是在2012年发布的Surface平板电脑中,它运行的是WindowsRT(Windows8forArm)。如果微软全力支持ARM,他们应该早在2012年就将MSVC和VisualStudio移植到ARM,类似于苹果在发布第一批ARMMac时对Xcode和Clang的支持。

回顾过去,微软似乎将VisualStudio移植到ARM上没什么想法。直到今年,微软才将VisualStudio移植到同一架构的64位版本。这是2003年发布的第一个64位x86CPU,即Athlon64,而这距离现在已经19年了。不过微软的确在2005年左右将MSVC移植到了64位x86上,因此ARM并不是一点希望也没有,但是为了让开发者获得更好的体验,微软需要将整个VisualStudio堆栈移植到Arm。

【参考资料】

https://www.zdnet.com/article/does-windows-on-arm-have-a-future/

https://www.zdnet.com/article/op-ed-windows-isnt-ready-for-arm-developers/

https://www.zdnet.com/article/future-of-desktop-computing-is-it-all-in-apples-hands-with-arm/

《》正式上市,50余位技术专家共同创作,云原生和数字化的开发者们的一本技术精选图书。内容既有发展趋势及方法论结构,华为、阿里、字节跳动、网易、快手、微软、亚马逊、英特尔、西门子、施耐德等30多家知名公司云原生和数字化一手实战经验!

© 2016-2022 ysjhz.com Inc.

站点统计| 举报| Archiver| 手机版| 小黑屋| 影视聚合站 ( 皖ICP备16004362号-1 )