用过电脑的差友应该都知道,Windows 的兼容性好到让人几乎找不到不兼容的。
甚至于最新的 Windows 11 系统,依然能无压力运行 27 年前的 Office 95。
这种极端的兼容性一方面有微软的功劳,另一方面,英特尔的 x86 处理器架构实在是。。。
太稳定了!
即使是今年最新的英特尔 i3、i5、i7,他们仍然高度兼容 1987 年的 x86 开山之作 —— 8086 处理器的指令集。
虽然后面为了新的硬件特性增加了不少新的指令集,但老的指令集也坚决不删。
突出的就是个一脉相承,同宗同源。。。
但是看样子,英特尔在坚持了快半个世纪之后,终于决定给它来一刀了。。。
大概是果子的 ARM 处理器给了英特尔太大的震撼,前些日子英特尔发布了一份《构想简化的英特尔架构》白皮书。
其中正式宣布了英特尔未来处理器的新架构 —— x86S。
和名字暗示的一样,这个新架构依旧和现有的 x86 同源。
但是,英特尔砍掉了一大堆旧特性,把它给精简(Simplify)了。
最核心的一点,就是只保留了 64 位模式,彻底砍掉了 16 位和 32 位模式的支持。
要知道,64 位处理器如果想要原生支持旧时代的 32 位程序,代价还是相当大的。
比如说在骁龙 8Gen2 里,需要兼容 32 位的 A710 核心,能耗上比没有兼容性包袱的 A715 核心差了 20%。
而现在,英特尔也像苹果、高通一样,为了产品性能,全面拥抱 64 位设计了。。。
OK,照理来说,这篇稿子说到这儿就该结束了。结果我在看英特尔这个白皮书的时候,发现里面提到:“简化架构依旧可以通过 64 位模式提供 32 位程序支持”。
换句话说,我们现在电脑上那堆 破烂 好用的小工具、QQ、百度网盘,以及各种网络游戏。。。
这些处于 “32 位重灾区” 的程序,就算一辈子不改用 64 位代码,也能在英特尔之后的 x86S 架构上直接运行。
而不是像手机上那样,被苹果和谷歌推着全面转向 64 位开发。
我擦,英特尔这是开发了什么划时代的魔法???
为了搞明白英特尔到底是做了什么,才做到了苹果都做不到的事,我好好去找了找资料。
然后发现了一个事:
英特尔移除 32 位模式,确实不等于移除 32 位程序支持。甚至移除了 32 位模式,还能让 32 位程序的运行速度变快。。。
话说到这块儿,我们就得聊一聊英特尔现在是怎么设计处理器的了。
首先,一块最新的英特尔 i9 处理器,运行效率可以媲美苹果 M1 处理器。
但是大家猜猜,它在运行一个最新开发的 64 位程序时,步执行的操作是什么?
是把自己模拟成一颗1978 年的 8086 处理器,然后以 16 位模式开始运行程序代码。。。
别问,问就是 “兼容性考虑” 的一部分。
但是,模拟出来的 16 位模式是肯定执行不了 64 位程序。
所以处理器会退出 16 位模拟 —— 再切换进 32 位模拟。。。
32 位模拟自然也是跑不了的,这时候处理器才会最终回到 64 位工作模式,再次开始执行。
OK,这次程序终于跑起来了。
是不是很抽象。。。
所以为什么,处理器里会有这么抽象的一个 “逐级切换” 的过程呢 —— 因为 1985 年,英特尔设计首颗 32 位架构处理器 80386 的时候,就是这么定义 “兼容的运行规范” 的。
别问,问就是 “兼容性考虑” 的一部分。
虽然以如今处理器的性能来说,“逐级模拟” 的性能损耗也不是那么大。
但由于操作系统的调度方式,它每秒都要发生几十上百次!
积少成多,这得多浪费啊。。。
就这样英特尔还能把 i9 的运行效率做到苹果 M1 的水平,对不起英子,以前是我误会你了。
我向你道歉!!!
咳咳,好了我们言归正传:
而这次的 x86S 最重要的一点变化,就是砍掉了这个 “逐级模拟” 模式,起手直接进入 64 位模式干活。
这不简单多了!
而且没有了 16 位和 32 位模拟,不仅是代码执行流程得到了精简,处理器设计也能得到简化。
要知道,这些功能实现的根本,是光刻机在芯片上刻出来了相应的电路。
把这些爷爷辈电路砍掉之后,腾出来的地方自然可以给更新、更宝贵的功能模块使用。
OK,英特尔做了什么我们搞明白了,可是另一个问题还是没解决:
为什么处理器里都没有 32 位模式了,未来的 x86S 也还是能无伤运行 32 位程序?
这件事,功劳其实在微软。
早在 WinXP 64 位版发布的时候,微软的程序员们就在系统里内置好了 “32 位 Windows 子系统”,能够以近乎无损且无感的方式转译 32 位程序到 64 位系统中执行。
换句话说,现在我们电脑里的 32 位程序,其实也没用到处理器的 32 位模式。
它们一直都是被 Windows 系统自己转译执行的。。。
emmmm,显得英特尔之前的兼容操作更蠢了。
假如你是个一直使用最新 Windows 系统的普通用户,那么英特尔接下来要的 x86S 对你是百利无一害的。
等新的 x86S 处理器发布之后,冲就完事了 。
现在大家应该能看出来,作为一个沿用了小半个世纪的架构,每一颗英特尔 x86 处理器都是一个小小的 “屎山堆”。
上面提到的 16-32-64 的兼容模式,是对处理器性能比较有影响的一个设计,但它其实还只是 x86 这坨屎山的一个侧面。
事实上,英特尔这次为了列举 x86 里有多少 “ 过时特性 ”,花掉了十多页 pdf。。。
x86S 将删除和修改的特性列表
所以为什么英特尔憋到现在才开始决定对 x86 架构动刀子,以前没有人站出来过吗?
其实是有过的,早在 1994 年的时候,32 位的 x86 处理器就已经暴露出问题了。
最主要的隐患是,它的内存寻址最大只支持到 4GB,再大就不支持了。
这对当时的个人电脑来说问题不大,但是对于企业和网站的服务器来说,这相当于把性能上限给锁死了。
那一次,英特尔给出的答案是推出全新的“安腾”架构 —— 不仅支持超大的内存,而且设计比 x86 架构精巧的多。
雄心勃勃的英特尔想让大家通过“安腾”处理器重新认识电脑。
安腾电脑的贴纸
结果因为完全不兼容以前的 x86 程序,任何一个程序要想运行在安腾处理器上,都要重写。
而且据开发过安腾程序的小伙伴说,开发安腾架构的程序,要比开发 x86 架构的程序复杂的多。
于是全世界的程序员们一起,给英特尔结结实实上了一课 —— 压根没人想给他搞开发。。。
估计就是因为这次险些把公司玩死的经历,才让英特尔把保证兼容这件事给写进了祖训里。
但是现在,时代又不一样了。
最近两年,苹果靠着 M 系列芯片疯狂吃走市场,传统 x86 电脑的市占率如山体滑坡。。。
在服务器上,同样是 x86 节节败退,ARM 步步紧逼。
假如大家看过行业新闻会发现,现在华为、阿里发布的新款服务器,几乎都是一水的 ARM 处理器。
兼容性固然可以换来 x86 程序员们的肯定,但假如整个 x86 市场都要被干穿了,兼容不兼容的。。。
还是先放一边儿吧。
现在的市场风向,已经足够激起英特尔的危机感了。
而 x86S,就是英特尔应对这次危机的答卷。
并且与上一次大刀阔斧,“重新做人”的安腾相比,x86S 这次的调整就像一场精妙的手术。
对普通用户来说,原有的都能正常使用,就和苹果从英特尔转向 ARM 时一样 —— 那处理器的变化和我们有什么关系呢?
我对 x86S 能产生怎样的效果,还是比较乐观的。
毕竟前两年就有一个现成的例子:高通和联发科放弃 32 位支持之后,安卓手机芯片的性能瞬间飙升了一截,首次和早早放弃 32 位的苹果 A 系列芯片站到了同一水平线上。
同样的,对于 x86 这位拖着半个世纪包袱的老将,放下过去的重担,想来只会让它跑的更快。