Quantcast
Channel: 知乎日报
Viewing all articles
Browse latest Browse all 20608

如何评价微软在 WinHEC 2016 大会上演示的基于 ARM 的完整版 Windows 10?

$
0
0

日报标题:新发布的完整版 Windows 10,是个新方向的开始

知乎用户,啥都略懂

关于 API 模拟说的不精确,修改。

不愿意看长篇大论的人,我给你准备了几个言简意赅的:

  • HAL 的设计使得 Windows 加入新架构相对来说工作量不是无法完成。但也不是简单的事情。
  • 对于 x86 的 Emulation 不完全是软件的指令翻译。是利用新处理器架构加入的功能,在硬件抽象层和 Windows API 共同引入新的虚拟层,而不是模拟器或虚拟机,所以也不是绝对的直接指令翻译。因此性能可以期待。同时因为不是全虚拟,推测原有 X86 的内核态驱动应该是无法直接兼容。简而言之是用户态的二进制兼容。
  • 从 Photoshop 和游戏来看,绝大多数指令和系统 API 以外,跟 X86 关系很紧密的 DirectX 的支持应该也是实现了,不知道这里怎么做的,猜想下了很大精力。
  • 大家可以期待一下 Surface Phone,大约就是和这个一起上了。考虑到 RS2 是 Creator Update,那这个东西到来的时间点应该是 RS3 或者 RS4(如果还这么叫的话)。也就是……至少明年秋……:-(
  • 目前只限于高通的 SOC,似乎还是仅限于 MSM8996 和以后的 8998。不知道啥时候可以开放给全系 ARM 使用。至少短期应该不会遍地寨机。Surface Phone 或者其它三方的旗舰 ARM 设备,可以期待一下。

废话多一点说一下我的理解,希望大家看完能有些启发。

这个东西如果关注微软 OS 近几年的演变方向会觉得是一个很水到渠成的东西。

几十年前,Microsoft 和 Intel 还是一对亲密合作的好基友的时候,Intel 负责飙处理器性能,而 Microsoft 负责用软件将这些性能榨光。这种搭配造就了 Wintel 联盟几十年的辉煌。

进入近十年以来,移动设备迅猛发展。消费领域对计算力的要求逐渐从继续增强性能转向到了减低功耗和增加续航。ARM 架构的 CPU 因为良好的功耗控制以及相对越来越强的性能在移动市场攻城拔寨。同时桌面和笔记本市场本身由于被移动计算设备挤占而增长乏力。Intel 还是想在移动计算市场拿一份蛋糕的。它使用的战略是先拿着自家的阉割产品 Atom 去迎战,没想到瘦死的骆驼比马大,然而骆驼瘦死了但市场要的是“小”而不是“大”。Atom 折腾几年,除了因为 Intel 的补贴让山寨平板小发一笔外,市场一点也没有起色。后来 Intel 砍了 Atom,但贼心不死又把 Core M 这东西拿出来,但是折腾到现在,还是解决不了几个一直就必须要解决的问题:功耗下不来,待机上不去,GPU 弱到哭,基带老又旧。

反观微软这边,选择继续搞 X86 还是投向 ARM 都是艰难的决定,但总要押准未来风向才能占据生态圈的顶峰。在鲍尔默时代末期,强调设备,于是乎一下子弄出两个东西:Surface RT 和 Surface Pro。虽说都在 Surface 这个品牌下面,然而从操作系统层面讲,这俩货完全不是一个东西。RT 是跑在 ARM 上的一个定制版 Windows RT,而 Pro 是跑在 X86 上的完整 Windows。鲍老头算盘打得好,就是脚踩两只船。ARM 和 X86 一个都不放弃。然而市场给出了当时的选择:Pro 火了成就了 2-in-1 这个中间产品形态。而 RT 暴毙。RT 失败的原因有多个,一个是当时的 ARM 性能并不强,一个是临时拼凑的 Windows RT 太残废。同时,微软在手机领域因为跟 Nokia 的合作成立了手机部门,WP7,WP8 加上 Lumia 这个品牌软硬一起上愣是活生生搞了几年,叫好不叫座。情况是:X86 下正统 Windows 因为桌面市场不景气市场占有率逐步下降,ARM 下 Windows RT 先天不足无力接管大局,同时 WP 也是另起炉灶的 OS 前途茫然。应用不兼容不说,维护多套系统也给微软带来了很大负担。

好歹 Surface Pro 的成功给了 X86 以及这个生态圈新的希望。Intel 连续的 BroadWell 和 Skylake 还算堪用加上 Surface Pro 的示范效果拔群,带起来了二合一设备和超轻薄笔记本的市场,于是大家一窝蜂的做超轻薄的笔记本或,伪平板或者 2-in-1。然而 Intel 此时在 CPU 层面发力仍旧不够,超低电压的产品虽然持续改进功耗和电池消耗,但是想要达到更轻薄的平板甚至手机的要求还是勉强。大家都在想,Intel 嫩行不行啊,再挤牙膏我们就转投 Android + ARM 阵营了。微软一拍大腿,得了还得我发力。想我脚踩两只船做 RT 和 Pro,基于 ARM 的 OS 还是有点心得,我再继续努力一下,把 Windows on ARM 不做成 RT 那种二等公民而是正宗 Windows,这样应该可以了吧。于是全新的 Windows on ARM 就来了。

说拍大腿就弄出来是开玩笑,实际上一个 OS 的开发量是很恐怖的,不是想做就能做。做一个全新微处理器指令集和架构的 OS 可不是几年就能搞定的,然而火烧眉毛了逼也要逼出一套东西来。微软说不怕我会画大饼,饼画不好我还会改名!于是微软下了很大的一盘棋:一方面把 Windows 版本号定死在 10,另一方面抛弃以往 n 年一代产品的开发模式而激进地采用了半年一个大 Release 的方式。把 OS 用互联网快速开发快速上线这种思维来搞。同时宣布移动操作系统也并入 Windows 10 旗下,叫做 Windows 10 Mobile。这么做的潜台词是:这盘棋要下很久,但是下一点就给你扔一点成果出来给大家打打鸡血。。。

大戏开场了。还记得前面的 Surface RT 么,它除了烧一大笔钱外还留下了一个东西 -- WinRT,粗糙一点说,WinRT 就是一套全新为现代硬件和移动 OS 设计的但是阉割过的 API。微软在这个 API 的基础上修修补补再加上重构弄出一个 Universal Windows API(具体名字到底是啥忘记了),用于跑 UWP。这套东西虽然没办法完全替代 Win32 API,但是优点是起点比 Win32 高,设计时就考虑了各种硬件产品形态,交互方式,以及现代的与底层分开的逻辑。Windows 10 的第一个正式版本其实就是加了 UWP 支持的 Windows,版本号应该是 10240 吧。这个版本只有 Desktop 版,因为 Windows 10 Mobile 还没来得及并进来。同时第一张大饼扔出来:UWP 乃未来,以后桌面手机都跑它。这套 API 因为没有历史包袱加上设计时就考虑了不同形态的移动设备的支持要求,所以按照新 SDK 少量修改代码的 WP8 或者 8.1 的 APP 也可以跑,总算是好歹出来了。

在第一个正式版之后接下来的的 Threshold 开发周期内,微软不停的把 WinPhone 的代码往 Windows 搬加上 APP 往 UWP 转,慢慢地把 WP 釜底抽薪终于给弄出来 Win10 Mobile,记得版本号是 10586,这就是第一个 Mobile 的正式版,当然也有桌面版。不过我记得这个版本号的时候桌面版和 Mobile 版并不是一个发布时间,从侧面说明其实 Desktop 和 Mobile 还是没有融合完全。直到 TH2,Windows 10 才做到了 Desktop 和 Mobile 的版本号同步。在 Threshold 期间,W10M 手机貌似看起来比 WP8 好不到哪儿去,甚至有时候功能还有退步,这就是因为微软还在吭哧吭哧地改底层东西,重心不在新功能。稍微深入点看,应用层面它既有原先 SilverLight 的 APP 又有 UWP 两套体系,底层支持方面不停地从 WP 往 Win10 合并模块和驱动谋求 OS 层面的完全融入。直白一点说, 一直处于修炼内功状态而吃瓜群众看不出来。但是没有饼吃瓜群众不干了,这可不行。于是微软抛出第二张饼 --Continuum。意思是你看 UWP 不光软件能在两边跑,同样的一个设备如果计算力足够强,可以直接在一个 UWP 展现移动和桌面两种使用形态。

到了 Redstone 时代,算一下此时其实已经过去了 2 年时间。对于市场来说,这实在是太长的一个时间了。回顾一下,X86 上由于 Surface Pro 的给力表现,再加上 Surface Book 的强心针,还是维持的不错。然而 ARM 那边一方面 RT 惨遭太监下面没了,另一方面 Lumia 品牌由于 WP8 的不成熟和 Windows 10 Mobile 的糟糕表现,市场持续滑铁卢。再加上跟 Nokia 的合同到期,微软无奈之下,把 Lumia 砍了。个人来看,这个决定虽然无奈但也是可以理解的。毕竟做为追赶者的 Windows 10 Mobile 并没有短期追上 Android 和 iOS 的希望,再弄些糊弄人的设备出来骗不到钱也还会透支粉丝那里的口碑。还好这些时间内功修炼的多,不是没有收获,在 RS1 周期内一方面 Desktop 端继续强化 Windows 10 做出 Creator Update,另一方面 W10M 也继续修炼内功将 WP 完全融入 Windows,从 Insider Preview 的节奏来看,这阶段 Desktop 和 Mobile 可以算是完全同步了,UWP 在 API 和 SDK 层面也逐渐成熟。Windows 10 此时可算是神功初练成,可谓万事俱备,只欠东风了。然而前面 Surface RT 的教训还在,不管你叫 WinRT 还是叫 UWP,不能跑传统 Win32 的东西,消费者是不买单的。如果要推出基于 ARM 的设备,Win32 程序的支持,是个绕不过去的话题。于是就出现这个现在也就解决方案了,微软联合高通软硬兼施,想法简单粗暴,既然要老的程序能跑,我就把老的 Win32 API 在 ARM 的 kernel 上再写一遍嘛!同时通过跟高通扩展一下 ARM 指令集和增加 OS 层面虚拟层支持,软硬兼施使得基本的 X86 指令能跑完整,这就是所谓的 X86 模拟了。

有了 X86 模拟,Windows 10 的下一个卖点就这么来了 -- Windows on ARM。回头看来,从 TH 阶段就在做的 ARM64 架构支持,只有加上 X86 模拟,才能称得上是完整的解决方案。在这上面,通过 Universal API 支持起 2 年以来的 UWP,通过 ARM 版 Windows 内核上的虚层加上支持原有的 Win32API 跑老程序。只要做到应用的二进制兼容,目的就达到了。有人说是“模拟器”或者是“虚拟机”从而担心性能损失,然而这并不是完全的一对一的指令 CPU 微指令翻译,所以可以相信即使有损失也不会很大。如果要类比的话,近一点可以类比 WSL,远一点可以类比 WinNT 或者 2000 里面的 NTVDM。当然这种层面的模拟也是有限制的,例如给 Win32 写的内核驱动肯定不能直接拿来用,牵扯到 HAL 的内核子系统也需要重写。微软实现这个模拟 x86 的目的,只是为了客户一个时间窗口能够慢慢地由使用 Win32 程序转变到使用 UWP 应用。有人说只有完整原生支持 WinAPI 的程序才是好 Windows 程序,然而 x86 和 WIN32 的历史包袱实在是太重了,它们确实需要被替代。我个人认为这种新设计一套 API,然后让基于老 API 的程序在能被兼容运行的前提下慢慢消亡的做法,才是正确的道路。

按照这个脉络来看,微软对于 Windows 的未来是贯彻并且坚决执行了 Windows as a service 这条道路的。就是说不管你硬件怎么发展,Windows 都能做到让用户以最舒服的形式使用到即可。打通处理器架构的次元壁,确实是很有野心的想法。当然,这需要 Windows 发生一次由内到外犹如新生一般的蜕变,Windows 10,正处在这个蜕变过程当中。我个人认为,微软画的大饼,其实已经暗含了以后的发展道路:打通处理器架构次元壁是其一,打通设备形态次元壁是其二,请期待 Continuum 接下来的形态。

从吃瓜群众的角度来看,Windows 10 其实在几年内出现各种抽风不稳定和逻辑混乱的表现。消极的想,可以简单认为微软不行了操作系统玩不转了,而积极的想,是不是可以认为其中蕴含着 OS 的大革命呢? 同时,再联想一下友商:你觉得 MacOS 最近表现不正常是为什么;MacOS 和 iOS 说要合并的流言是不是隔三差五就会听到?再然后,你听说过 Google 的 Andromeda 吗?

或许,你正处于见证这个行业再一次出现变革的伟大时代。

本文通篇都是 YY。


Viewing all articles
Browse latest Browse all 20608

Trending Articles