革命性进展 ARM首次成功模拟运行x86

  ARM在移动领域风生水起,但是要想在桌面和服务器上占领一席之地,最大的麻烦就在于不兼容最为普及的x86代码系统和程序,而出路只有两条:要么大力推进自己的生态系统,要么模拟运行x86,就像曾经的全美达那样(下场比较惨)。

  今年七月份,英国厂商Boston Server推出了基于Calxeda ARM架构处理器的服务器“Viridis”,之后也一直在披露其工作进展,近日更是豪气万丈地官方宣布了一个历史性时刻的到来:这套ARM平台第一次成功运行了x86代码!

  过去一段时间里,Boston一直在和来自Eltech的工程师团队就此进行合作。这家貌似来自俄罗斯的公司正在ARM服务器上开发能够运行x86程序的软件,并且已经成功开发出了一种可作为模拟器使用的二进制转换器(binary translator),能够发挥出大约45%的原生ARM性能。

  双方在Viridis平台上进行了六大类别的深入测试后,将这一模拟效率提高到了65%,并且会争取在近期继续提高到80%,乃至更高。

  虽然Boston拒绝披露具体细节,但是AnandTech网站分析指出,Eltech的模拟器是实时翻译、运行x86代码的,因此整个模拟器会有些偏大,毕竟它要在两套完全不同的指令集架构之间牵线搭桥,不同于VMware那样在x86-x86之间转换。

  据称,Eltech使用了1MB的转换器缓存,这意味着代码转换可以重复利用,但随着缓存逐渐填满,重复利用率就会迅速降低,而且只有相对轻便的代码才能运行得比较快,获得宣称的45-65%的转换效率。

  但是我们知道,大多数服务器应用的代码和指令都很大,所以Eltech的转换器能否高效率运行它们也有待观察。高性能计算软件倒是相对不那么复杂,但这玩意儿对处理器性能要求又特别高,很难说服他们放弃x86、改用ARM再去模拟x86(何苦来着)。

  总的来说,二进制转换器在特定场合下还是有用的,比如某些特定的Web应用软件不算很大,又是闭源的,没有ARM版本,但除此之外就很难说了。ARM服务器真想闯出一片天地,最稳妥的还得是催生一整套针对ARM架构完全优化编译的Linux软件。