Java有一个口号:编写一次,到处运行( Write once, run anywhere. );这是指它的跨平台能力。现在再提这句话已经没太大意思了——因为几乎任何语言都可以做到这点。但是,当Sun在上世纪九十年代初提出这句话的时候,我们知道这曾带来了多大的震撼!
让我们回到那个时代。那时,编写便携代码(portable code)的工作是让人极其头疼的,它们需要能够足够干净的移植到十几种不同架构的处理器上。当时的处理器有Alpha、MIPS、PA—RISC、PowerPC和Sparc……可以想见,通过所有这些的编译器可不容易。有人使用小端字节序(little-endian byte ordering),另一些人使用大端字节序(big-endian byte ordering)。有人喜欢CISC(复杂指令集),有人喜欢RISC(精简指令集)。在那样的混乱中,Java的出现的确是个天大的好消息。
但看看今天的情况。当2006年苹果最终放弃PowerPC后,x86成为桌面处理器领域的独舞者。即使在服务器方面,现在所有的主要硬件厂商都在提供x86架构的服务器产品,无论他们曾经站在怎样的立场。
事态的发展并不止于此。今天,即使非x86的平台也想做得像x86一样。比如上周一家名为Mantissa的公司发布了新的软件包,能够让IBM大型机运行虚拟化的x86操作系统。也许终极的答案会是JPC虚拟机,用Java编写的完整的x86模拟层——它是如此完整,我们将可以在一个浏览器窗口里启动Linux。
随着时间推移,我们似乎看到一个新的“编写一次,到处运行”正在出现,而这次的主角不是Java字节码,而是处理器的语言,它的名字叫做x86。
x86的成功源于对商业市场的妥协
如果我们把x86的历史挖出来,你肯定会觉得有点意思。因为我相信你一定认为是8086将x86带入市场主流的,如果你真这样想,那说明你搞错了,x86真正意义上的繁荣应该归功于8088。【51CTO.com编者注,8086和8088均是上世纪70年代Intel公司的CPU型号。8086诞生于1976年,是一款开创了后来处理器世界的传奇产品,其芯片架构直至今日还被作为业界标准。8086是16位微处理器,芯片上有2.9万个晶体管,采用 HMOS工艺制造,用单一的+5V电源,时钟频率为5MHz~10MHz;8088于1977年诞生,既能处理16位数据,也能处理8位数据,有16根数据线和20根地址线,可寻址的内存空间为1MB。】
我们回到1980年,IBM正在为他们的第一台个人计算机——当时它的绝密代号是5150,后来人们习惯于称之为IBM PC——寻找一个CPU。它有足够的选项可以选择,可以选择Intel当时的旗舰8086,也可以选择自己设计的芯片,但它却选择了8086的小兄弟,8088。为什么?
8088的两个优势促成了这个选择。首先,与IBM自有的处理器不同,8088容易制造并且现货充足。其次更重要的是,虽然与8086有着相同的架构,8088使用了类似于上一代CPU的8位数据总线。这意味着它可以与当时市场上的大量芯片和组件完好的集成在一起。换言之,8088不仅是一个便宜的芯片,它还可以让你组建便宜的计算机。
这一简单的区别导致了后来所有的差异。8088受到了命运的青睐,成为PC革命中的CPU核心,而8086——虽然x86因它而得名——最终只取得有限的成功。IBM选择Intel的x86架构并不是因为它是的技术最好,而只是因为8088价格便宜,功能合适。
低期望值的全面胜利
显然,x86既便宜又简单,这成为它所向披靡的重要原因。当Linux最终在x86平台上开发出类Unix操作系统之后,那些昂贵专有的RISC芯片的市场开始消亡了。苹果没有对x86妥协,因为它钟情于PowerPC的优越架构;但是在性能的数字竞赛中,PowerPC还是无法避免的落后了。苹果又何必逆流而动呢?
当然,Intel在其中发挥了很大作用。基于x86的IBM PC及其伙伴们的巨大成功也带给Intel无与伦比的市场占有率。但Intel没有意识到的是,它创造了一个怪物,最终却无法控制:市场拒绝了安腾,而Intel被迫跟在AMD身后继续研发他们的x86-64。
今天,我们看到同样的事情重复了一遍又一遍——x86出现了一个又一个的新版。没有人仔细想过在大型机上运行Windows,不过只有这样,才能一边充分利用大型机的硬件可靠性和扩展性,一边又可以运行Windows的应用程序。JPC虚拟机的出现使x86代码可以在新的和以前从没想到过的环境中运行,比如手机,这应该给我们以启示。
但我有点怀疑:这真的就是我们能做到的最好情况吗?我举一个反例,70年代前苏联曾经建造出可用的三进制计算机,有点讽刺的是,为了模拟x86芯片,他们放弃了那项研究,从此三进制计算机再没有出现过。
Yahoo的Douglas Crawford曾经说过他对网络的担心,“我们惟一害怕的是不成熟的标准。”而我担心这已经发生在CPU市场,x86将是我们在今后很长一段时间内的惟一选择。
【51CTO】
No comments:
Post a Comment