挖个坑,聊聊ARM以及跨平台计算(更新 为什么Rosetta2跑不了虚拟机)

  • 9
    94crazy
    最近ARM在版上出现频率涨的很快,其实之前N1,一些chromebook什么的都是ARM,并没有引起这么多的讨论。
    苹果的影响力确实大,很多人都加入了对跨平台计算架构的思考,关心遗留的x86程序如何转到ARM平台的问题。
    这个帖子就是要解答这个问题,但不限于x86到ARM,也可以是ARM到x86, RISC-V到ARM,更不是具体讨论苹果,重点在于跨平台计算本身所面临的困难和需要解决的问题。


    其实大家都知道,计算机系统由于太过复杂,被抽象出了很多层,用户能接触到的仅仅是UI层,大部分开发者,所面对的也仅仅是应用程序。

    不同的开发者会使用不同的程序设计语言,低级的如汇编,高级的如JavaScript,这些程序员所能看到的“计算机”其实是完全不同的。

    系统结构设计者能看到指令流水、cache、分支预测,汇编程序员能看到寄存器和内存,C程序员能看到内存,而JavaScript看到的是JIT之上被封装了一层又一层之后的编程接口。


    在其它帖子里看到了很多看好和不看好ARM的态度,其实大家说的都对,只要明确一下你面对的是哪一层,跨平台会带来什么也就很明确了。

    这里可以有一点剧透,就是所有的抱怨都来自于你的下一层没有足够的支持,比如缺库/不稳定/不适配/性能低下,所有看好ARM的都来自于下一层提供了足够的支持,比如Python, java, 各种基于浏览器的应用。
    从某种角度来看,用户操作界面,各层程序员操作各种接口,其实没区别,都要依赖于下一层提供的支持。
    所以,针对这个问题的争执可以到此终结了。


    之所以上层开发者或者用户不必关注计算机系统结构或者硬件的细节, 是因为有编译器、解释器、runtime以及各种框架把更接近人类认知的接口/代码/界面翻译成了机器能够执行的指令。


    而这些东西,才是跨平台计算的核心,也是这篇帖子想要聊的东西。

    毕竟,所有跨平台计算,最终都要变成目标平台的可执行二进制指令。


    PS
    对于关心苹果ARM机器的普通用户来说,这个帖子可能没多少你们想要的信息,因为只要耐心等待软件齐备就可以了。
    对于苹果ARM应用开发者来说,可能也没多少有用的信息,苹果会提供开发工具和各种库。
    如果想在苹果ARM上跑x86程序,苹果已经准备好了工具,目前我也不知道是怎么做的,但是脱离不了后面我要介绍的内容。

    对于期待深入了解这个话题的小伙伴,恭喜你们可以获得不少根本没用的知识。
    在整个行业当中,这里要聊的是非常小而具体的一个点,绝大数开发者和用户不但看不到,而且用不到。
    但是,归根结底,可执行二进制指令不是大风刮来的。

    由于没有太多时间,这个坑会慢慢填,长短不好说,可能挤牙膏但是不会烂尾,可能会包括下面的内容:


    1. 手里的ARM笔记本Pinebook Pro的使用体验(有多少坑,就有多少希望)
    2. 为什么要有跨平台计算,异构计算系统的发展(ARM想挑战桌面CPU很久了)
    3. 跨平台计算的难题和关键技术(可能不是大多数人想看的,会尽量说通俗一点)
    4. 简介一个具体的跨平台计算及性能优化例子(也许会涉及到手动编码二进制)
    5. 还没想好,希望能听听大家讨论ARM侵占桌面及服务器市场之后带来的机遇
  • 9
    94crazy
    坑空着也是空着,留点思考空间占位:

    ARM的生存空间和优势?
    ARM加入桌面和服务器市场,会带来什么?
  • 9
    94crazy
    ——————思考题——————
    跨平台的需求越来越多,那么如果:
    *你只有可执行程序
    *你有可执行程序和依赖库
    *你有源码
    如何让你心爱的程序跑到一个新的平台上?
    如果你有了答案,
    那么下一个问题是:再仔细想想,你的答案真的可以吗?

    运行中的程序,
    *如何热迁移到一个不同体系结构的机器?
    *如何部分迁移到一个不同体系结构的机器?
    *真的有这种场景吗?
  • 9
    94crazy
    占坑紫薯补丁

    没想到刚挖好坑,都还没填,就已经有3页回复了。

    回复的质量很高,大家都参与的讨论会比我分享的东西更有意义。

    在这个帖子里期待话题相关的任何问题和讨论!


    -----------------Q & A----------------


    1. 为什么Rosetta能跑大部分x86程序,但是跑不了x86虚拟机?

    对二进制的重新编译只能让一个平台的程序以同样的语义在另外一个平台运行。那么对于所有涉及到目标代码生成的应用,比如大部分的JIT和虚拟机,它们的行为不会发生改变,本来生成x86指令的,在ARM上哪怕跑起来,它们生成的还是x86指令。这部分指令是动态生成的,静态的重编译处理不了。
    然而这并不是静态重编译唯一的缺陷,读到这里的朋友可以想一个静态手段处理不了的其它情况。
  • R
    R520
    支持,听讲。
  • I
    IAmThrilling
    楼主本职是做啥的?
  • c
    cjj2009
    绑定紫薯布丁 iOS fly ~
  • 万里长云
    占坑 准备听讲
  • y
    yhmz
    首页占坑等连载。
  • z
    zybest
    可以啊,难得的复合d版精神的帖子
  • f
    firmit
    占坑,搬板凳学习
  • 9
    94crazy
    回复8#IAmThrilling


    在系统层面解决跨平台虚拟化所面临的各种问题,性能,测试,安全,迁移......
  • X
    Xiaoqiang788888
    iOS fly ~
  • t
    tubage
    马克学习
  • g
    gain_hi
    回复2#94crazy


    这个体验怎么样?
  • I
    IAmThrilling
    虚拟化大厂的?
  • J
    Jeanslike
    干货帖 Mark iOS fly ~
  • 我要闹绯闻
    马克一下,
    现在看来新的ARM MBP还不适合入手的感觉
  • c
    codasky
    这个要mark一下,D版很久没有有深度由内容的帖子了,更多的是只言片语的抱怨和嘲讽,期待后续。
  • 9
    94crazy
    回复19#IAmThrilling

    还在读书
  • h
    hygaasd
    牛掰,支持一下 iOS fly ~
  • 剑二十三
    mark!
  • g
    googoofox
    神贴赶紧mark。不可以断尾啊,难得的discovery
  • x
    xiaoouay
    马克一下,楼主用的pinebook
  • s
    sanquan
    科普贴码住
  • n
    njim
    arm的上层不会是问题

    问题是apple会不会引导指令集以上的层次标准重建
  • w
    wwwEagle
    眼看着arm指令就翻了一倍多
  • 9
    94crazy
    指令集以上是指的编译器?编译工具链需要苹果提供,再往上大家还是该干嘛干嘛。不会影响到ARM社区其它的产品。
  • 9
    94crazy
    已经不容易了,至少我们已经有能够工作的翻译器,可以做很多尝试
  • n
    njim
    就是指各芯片产品层级以上的标准统一

    m1的能直接用标准arm的cross tool么?
  • n
    notrue
    复杂指令集和精简指令集的区别…? iOS fly ~
  • 9
    94crazy
    回复33#njim

    从技术上来说苹果可能会给自己的芯片加特殊的性能优化,会有一些指令扩展和特殊寄存器,通用的toolchain利用不了。从实际上来说我还不了解苹果到底是怎么搞的,没有机器。
  • 9
    94crazy
    回复34#notrue

    有这方面的原因,精简指令集只有load/store可以访存。但是这个例子里面x86只有1个pop和2个push是访存,不会因为这个多出来那么多指令。多出来的指令在模拟x86 CPU的状态。
  • f
    fryrice
    进来膜拜一下
  • e
    erik
    就mac而言,跨平台只是过渡阶段的问题,过个3~5年跨过去了就没这个问题了 iOS fly ~
  • n
    notrue
    学习了。

    不过个人觉得以Apple 的号召力和APP STORE 的变现能力,应该会有很多人愿意再开发一套专门的ARM版吧。

    现在X86的PC软件业快完蛋了。盗版横行、免费软件遍地都是,很多以前风光无限的软件企业都在苟延残喘。

    App Store 极高的付费用户占比,应该还是很有吸引力的。 iOS fly ~
  • 9
    94crazy
    回复38#erik

    对上层开发者和用户是这样,大部分人收到的影响会到此为止。但是对跨平台本身这个问题,后面我会详细解释,有数之不尽的问题待解决。
  • 9
    94crazy
    回复39#notrue

    完全同意。
  • 9
    94crazy
    回复41#rk23

    关于ARM服务器后面会说到。桌面,服务器,Arm化都是大势所趋。
  • c
    cjiangj
    D版精神再现,为楼主打call!
  • s
    sis5595
    养肥了看
  • 9
    94crazy
    回复44#cjiangj

    我觉得D版应该搞个德味复兴活动,各路宝藏ID都猫着呢,大家出来缓解一下被稀释的趋势
  • c
    chaos
    mark一下 iOS fly ~
  • 就这意思
    mark一下
  • l
    lol
    lz大牛
  • s
    sharpmaster
    pinebook这机器关注过,有人说硬件用料不行,比如屏幕还闪烁,不如买同款芯片的chromebook刷linux