2000 年 10 月,一位复旦大学的老师辞去教职,走进英特尔在上海的办公室。十多年后,他带领英特尔上海团队研发出的关键技术,让我们可以用装有 x86 处理器的个人电脑,运行原本只能在 ARM 架构上跑的 Android 系统。
这一技术在市面上绝大多数的“安卓模拟器”里都能见到。2021 年,以该技术为基础,英特尔联手微软,宣布在即将问世的 Windows 11 上实现原生兼容安卓应用。
在本文中,社长将带你了解这位英特尔中国工程师的经历和创造,回顾这项沟通 Windows 与 Android 的关键技术是如何诞生的,以及在 Windows 11 里面它将怎样影响我们未来的生活。
北京时间 6 月 25 日,在 Windows 11 发布会上,微软 Windows 部门负责人帕诺斯·帕奈宣布,Windows 11 将会支持在微软商店中直接下载和安装 Android 应用。此后,微软内部人士又确认用户可以自行安装 APK 格式的安装包,也就是“旁加载”安卓应用。
演示以抖音海外版(Tik Tok)作为例子,展示了无需安装额外的模拟器,Android 应用将以标准窗口模式运行,并兼容鼠标和触控手势,其运行效率也将有保证,不会卡顿。
这次兼容 Android 应用,微软是跟英特尔合作,采用了英特尔名为“Bridge”的新技术。会后,英特尔很快就出了一篇新闻稿,来更详细的解释 Bridge 的内涵。
“英特尔 Bridge 技术是一种运行时后期编译器(runtime post-compiler),能够让移动应用在基于 x86 的设备上以‘原生应用’形态运行,包括在 Windows 上运行。通过将领先的 CPU 核心、图形显卡技术、人工智能加速器、图形处理器等组件集成到单个经过验证的解决方案中,英特尔的多架构 XPU 策略可为合适的工作负载提供合适的引擎。”
说白了,这个 Bridge 就是起到了“安卓模拟器”或“虚拟机”的作用,但因为原生运行的缘故,效率会更高。而且摄像头、网络、传感器等都可以直接调用本机硬件,避免卡顿或者兼容性问题。
英特尔 Bridge 与华为“方舟编译器”以及苹果为 M1 芯片准备的“Rosetta 2”性质相同,但与 Rosetta 2 的编译方向相反,后者是从 x86 编译到 ARM 架构。
Windows 11 是第一个采用英特尔 Bridge 技术的产品,但未来 Bridge 会扩展到 Windows 之外。至于 AMD 用户也不用担心,微软表示 Bridge 技术在所有的 x86 处理器上都适用。
Bridge 并非从天而降,诸多开发者一看到就觉得十分眼熟。这让他们想起了英特尔 Houdini 技术,那是将原本基于 ARM 架构开发的 Android 操作系统移植到 x86 架构的关键部件。
Houdini 于 2014 年推出,是英特尔尝试踏足移动处理器领域,寻求 x86 手机处理器与安卓融合的产物。当时它局限于安卓应用在 x86 平台的运行,而现在的 Bridge 则强调其他平台向 x86 平台的迁移。
更值得一提的是,Houdini 是英特尔中国团队独立开发的。它从项目发起,概念验证,原型到最后的产品化,都由英特尔位于上海的研发团队完成。
引领 Houdini 项目开发的灵魂人物是李剑慧博士,他是英特尔架构、图形和软件事业部的首席工程师,负责领导深度学习框架集成和工作负载优化工作。如英特尔官网介绍:
“他曾是二进制翻译和 JIT 编译器方面的软件开发人员,领导开发了 Houdini。李剑慧毕业于复旦大学,获得了计算机科学博士学位。他在二进制翻译和实际应用优化方面拥有 21 项美国专利。”
李剑慧早年是复旦大学并行处理研究所讲师,2000 年 10 月加盟英特尔软件解决方案事业部,一直在上海 SSG 研发团队工作,为 IA-32 & 执行层产品核心开发人员。
资料显示,Houdini 技术成功解决了英特尔安卓平台上的应用程序兼容性问题,也让李剑慧获得了“英特尔成就奖”。
初到英特尔,李剑慧接到的第一个项目是“二进制编译”,负责质检、软件性能开发和调试等基础工作,也到客户公司驻场。为帮助 SAP 做 Java 编译器,李剑慧在 SAP 总部“驻扎”了两个多月,“SAP 的工作人员都以为我是他们的人了。”
这段经历让他从项目小组的普通工程师提升为项目经理。此后的 2005-2008 年,他进入 XML 项目和开发团队,并据此进一步发展为软件架构师。李剑慧向各大软件厂商输送软件开发的管理技术,与本土的相关的软件园项目的合作伙伴分享团队建设、项目管理方面的技术。
2010 年英特尔中国 25 周年时,他也获得了“英特尔年度最佳员工奖”。官方形容他是“热衷于培养人才的软件经理,大家都亲切地称他为‘李老师’。”
李剑慧提到,一次自己提交月度报告因不够详尽受到上司批评,这件小事对他的思维方式产生了很大影响。他意识到,工作的重要性不在于花了多长时间,而在于其结果会产生怎样的影响,这也就是英特尔倡导的“结果导向”价值观。
而做出 Houdini 并在全球范围采用,无疑是诸多“结果导向”中至关重要的一项成果,让李剑慧走到英特尔“首席工程师”的位置上。根据 LinkedIn 信息,他现在常驻位于圣何塞的英特尔总部。
李剑慧在 GitHub 的头像
在我们注意不到的地方,Houdini 可能已经悄然派上了用场。有人提到,“实际各个版本的安卓模拟器里都有 Houdini,只是不是官方渠道得到的。”
但用于模拟器并非英特尔开发 Houdini 的本意。事实上,名为 libhoudini.so 的模块存在于每一台搭载英特尔 x86 处理器的 Android 手机里,负责把 ARM 原生库动态翻译成 x86指令集,来实现兼容运行。
……等等?还有英特尔芯片的安卓手机?
当然有,但这是一个悲剧。英特尔自 21 世纪初就着手为移动设备制造 CPU,但它最终卖掉了与手机相关的业务,蹉跎了十多年光阴。
2000 年代初,在当时的 CEO 巴雷特(Craig Barrett)领导下,英特尔开始制定制造手机芯片等的移动战略。当时,英特尔为功能手机开发基于 ARM 架构的 StrongARM 处理器,与德州仪器的 OMAP 处理器竞争。
在 2005 年,巴雷特坚称英特尔的移动芯片很受手机制造商的欢迎。但其继任者欧德宁(Paul Otellini)认为,英特尔的核心业务是个人电脑市场,需要砍掉不重要的分支,以对付来自 AMD 的竞争压力。
2006 年欧德宁上任后的“两板斧”,一是大力促成了苹果从 PowerPC 转投英特尔阵营,二是以 6 亿美元的价格将 StrongARM 资产出售给美满(Marvell)公司。
后来,iPhone 和 iPad 的发售改变了英特尔对智能手机的看法。特别是 iPad 在 2010 年发布后,开始损害个人电脑的销量,而这些设备不使用 x86 芯片。
英特尔开始仓促修改最初为“上网本”设计的低功耗处理器凌动(Atom),以打造新的上网终端“移动互联网设备”(MID)。但这玩意儿仍然是 PC 思维,想要脱离鼠标键盘,纯用手操作仍有难度。
由于 2006-08 年高速移动互联网仍未普及,资费高昂,英特尔无法感知智能手机市场的增长。有分析师认为“个人电脑就是英特尔的世界观”。
2010 年,英特尔做出 Moorestown 芯片,但对智能手机来说太耗电了;此后出了改款 Medfield,首款搭载的智能手机是 2012 年 1 月发布的联想K800,随后是在印度发布的 Xolo X900 与法国电信的贴牌机。
这些手机运行着 Android 系统,但在此之前英特尔又走了一段弯路。为了躲开 Android,英特尔先是搞了基于 Linux 的 Moblin,2010 年与诺基亚 Maemo 合并为 Meego;这个系统此后又转到三星手里变成了 Tizen。直到 2011 年,英特尔才下定决心选择安卓,但为时已晚。
与此同时,英特尔对小型设备芯片的开发重心放在了低功耗上面,而不是改善性能。这本来是因为 ARM 主打低能耗,但局部改善并不能追上根本性的能效比差异,只是稍微延长了此后“超极本”的续航时间。
到 2014 年,接替欧德宁的科兹安尼克(Brian Krzanich)决定投入巨额补贴实现凌动出货 4000 万片的目标。当年英特尔共出货 4600 万片凌动芯片,主要投向平板电脑市场,但导致了巨额亏损。科兹安尼克决定不再为 x86 手机重复补贴政策。这基本标志着英特尔在智能手机芯片市场的全面溃败。
随着手机芯片制程工艺日益进取,跟 ARM+台积电的组合相比,英特尔毫无还手之力。与此同时,各档次芯片的成本和售价也进入了下降区间。2019 年,英特尔最后将 5G 调制解调器业务卖给了苹果,从而彻底退出了手机芯片市场。根据 Recode 的报道,英特尔在移动设备芯片制造领域投入 100 亿美元(截止 2016 年),结果一无所获。
在此之前,它的最后一款 x86 安卓手机产品在 2018 年 MWC 上亮相,定位于低端机型,面向拉美及非洲销售。在 MWC 现场,数码编辑顶着展台工作人员的压力,坚持了 20 分钟才勉强完成了一个性能测试,同时把机器变成了暖手宝。
综合来看,对 PC 的路径依赖,在切换到手机芯片赛道、选择 Android 操作系统等关键决策上的反复和短视,以及优化策略上的举棋不定,共同造就了英特尔 x86 手机芯片战略的破产。
由于英特尔在 2010 年代初最终决定切换到兼容 Android,这就意味着必须解决 ARM 指令集到 x86 芯片的转译问题,Houdini 就是在这个背景下开始研发的。在 2010 年的采访中提到,那时李剑慧“又回过头来继续做二进制编译项目”,推测此时他们的工作已经很接近研发 Houdini 的范围了。
原本为 Android x86 版本研发的 Houdini 并未因为该版系统的低覆盖率而被雪藏,随着 5G 推进,Houdini 被用于日渐成熟的云游戏和 AI 领域。
2018 年“英特尔与腾讯公司合作,利用英特尔至强服务器的芯片处理能力,配合英特尔 Iris Pro 核心显卡独有的云端渲染与视频转码技术,以及 Houdini 指令翻译软件包,能够实现用户在使用 App 的过程中实时解码,严格控制云游戏保持低延迟的流畅表现,有效提升用户体验。”
另外,Houdini“可以在基于人工智能的平台上透明地运行 Android ARM 应用,带来出色的用户体验”。
不过就像上面提到的那样,Houdini 事实上应用最广泛的地方是 PC 安卓模拟器,市面上绝大部分的模拟器都是基于 VirtualBox + Android x86 + Houdini 方案。
虽然安卓应用当中有专属的美团、抖音等消费和娱乐工具,以及 Protake、扫描全能王等生产力工具,但社长觉得大部分人装安卓模拟器的最主要用途还是……游戏。
由于电脑具备大屏键鼠操控优势,难免对在线对战游戏的公平性产生影响。所以,不少游戏会用一些技术手段判断是否处于模拟器中运行。其中一个简便易行的办法就是查看系统目录是否带有 libhoudini.so 这个文件。国外有些“比较正经的”模拟器比如 Genymotion 都会保留该文件,而国内开发的模拟器品种,有的会为了对抗反作弊措施而设法隐藏该文件。
在技术论坛上有人提到,某些优秀模拟器会让游戏获取的设备信息显示为 arm 而不是 x86,还会分配一个虚假的 ARM 处理器型号信息,欺骗游戏认为自己运行在一个 ARM 环境中。
为此,游戏开发者不得不长期采集使用电量、WIFI信号、蜂窝信号、陀螺仪等动态变化特征,才能判断是否运行在模拟器中。“如某 FPS 手游,新玩家进入后,分配到的游戏区不是模拟器专用游戏区,而当进入第二局游戏的时候,就被分配到了模拟器专区。”
——这也许就是为什么包括大型游戏在内,很多安卓应用都想方设法收集那些尽可能多的,看起来也许用不上的个人信息。
可以预计,基于英特尔 Bridge 的 Windows 11 安卓子系统,在给游戏和其它应用输送设备信息时会“诚实”地显示处于 PC 环境。
然而,多屏协同已经是肉眼可见的未来趋势,华为在官宣“鸿蒙”时已经演示了将小屏安卓游戏投射到同一家庭的平板上,以继续“作弊”的功能。
与此同时,安卓应用自身也在不断优化,为触屏、键鼠、折叠屏等多种使用环境的随意切换创造条件。举个例子,讯飞输入法最近的一次更新,让外接蓝牙键盘以后的表现,就像是电脑上的输入法一样,也可以使用 ctrl+c 和 ctrl+v 快捷键。
更不用说,以微软 XBOX Game Pass、谷歌Stadia、英伟达 GeForce Now 为代表的新一代流式传输的“云游戏”,正随着 5G 和高速家庭宽带的普及而具备基础的可用性,将同一种游戏体验带到从手机、平板、PC 到电视的所有屏幕,甚至多次尝试“入侵”苹果封闭的应用商店生态。
2020 年 9 月,苹果宣布改变其 App Store 规则,允许游戏流媒体服务上架,不过附加要求每一款在云游戏平台内玩的游戏,本身也应该单独提交苹果商店审核。这是诸多云游戏厂商苦心争取的结果,而手握 XBOX Game Pass 的微软自身就是其中最大的游说者之一。
所以,原本人们会担心安卓完全为触屏设计的界面在电脑桌面水土不服,现在这个问题也在解决中。可能这也是 Windows 11 选在当下兼容安卓应用的一个原因。
另一边,安卓自身也在不断演化。APK 包为基础的海量应用生态是安卓一手创造的,所以谷歌其实也并不想坐等微软或别的对手发展到足以形成威胁的程度。
分享到: