挖个坑,聊聊ARM以及跨平台计算(更新 为什么Rosetta2跑不了虚拟机)
- 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侵占桌面及服务器市场之后带来的机遇 - 94crazy坑空着也是空着,留点思考空间占位:
ARM的生存空间和优势?
ARM加入桌面和服务器市场,会带来什么? - 94crazy——————思考题——————
跨平台的需求越来越多,那么如果:
*你只有可执行程序
*你有可执行程序和依赖库
*你有源码
如何让你心爱的程序跑到一个新的平台上?
如果你有了答案,
那么下一个问题是:再仔细想想,你的答案真的可以吗?
运行中的程序,
*如何热迁移到一个不同体系结构的机器?
*如何部分迁移到一个不同体系结构的机器?
*真的有这种场景吗? - 94crazy占坑紫薯补丁
没想到刚挖好坑,都还没填,就已经有3页回复了。
回复的质量很高,大家都参与的讨论会比我分享的东西更有意义。
在这个帖子里期待话题相关的任何问题和讨论!
-----------------Q & A----------------
1. 为什么Rosetta能跑大部分x86程序,但是跑不了x86虚拟机?
对二进制的重新编译只能让一个平台的程序以同样的语义在另外一个平台运行。那么对于所有涉及到目标代码生成的应用,比如大部分的JIT和虚拟机,它们的行为不会发生改变,本来生成x86指令的,在ARM上哪怕跑起来,它们生成的还是x86指令。这部分指令是动态生成的,静态的重编译处理不了。
然而这并不是静态重编译唯一的缺陷,读到这里的朋友可以想一个静态手段处理不了的其它情况。 - R520支持,听讲。
- IAmThrilling楼主本职是做啥的?
- cjj2009绑定紫薯布丁 iOS fly ~
- 万里长云占坑 准备听讲
- yhmz首页占坑等连载。
- zybest可以啊,难得的复合d版精神的帖子
- firmit占坑,搬板凳学习
- 94crazy
- Xiaoqiang788888iOS fly ~
- tubage马克学习
- gain_hi
- IAmThrilling虚拟化大厂的?
- Jeanslike干货帖 Mark iOS fly ~
- 我要闹绯闻马克一下,
现在看来新的ARM MBP还不适合入手的感觉 - codasky这个要mark一下,D版很久没有有深度由内容的帖子了,更多的是只言片语的抱怨和嘲讽,期待后续。
- 94crazy
- hygaasd牛掰,支持一下 iOS fly ~
- 剑二十三mark!
- googoofox神贴赶紧mark。不可以断尾啊,难得的discovery
- xiaoouay马克一下,楼主用的pinebook
- sanquan科普贴码住
- njimarm的上层不会是问题
问题是apple会不会引导指令集以上的层次标准重建 - wwwEagle眼看着arm指令就翻了一倍多
- 94crazy指令集以上是指的编译器?编译工具链需要苹果提供,再往上大家还是该干嘛干嘛。不会影响到ARM社区其它的产品。
- 94crazy已经不容易了,至少我们已经有能够工作的翻译器,可以做很多尝试
- njim就是指各芯片产品层级以上的标准统一
m1的能直接用标准arm的cross tool么? - notrue复杂指令集和精简指令集的区别…? iOS fly ~
- 94crazy
- 94crazy回复34#notrue
有这方面的原因,精简指令集只有load/store可以访存。但是这个例子里面x86只有1个pop和2个push是访存,不会因为这个多出来那么多指令。多出来的指令在模拟x86 CPU的状态。 - fryrice进来膜拜一下
- erik就mac而言,跨平台只是过渡阶段的问题,过个3~5年跨过去了就没这个问题了 iOS fly ~
- notrue学习了。
不过个人觉得以Apple 的号召力和APP STORE 的变现能力,应该会有很多人愿意再开发一套专门的ARM版吧。
现在X86的PC软件业快完蛋了。盗版横行、免费软件遍地都是,很多以前风光无限的软件企业都在苟延残喘。
App Store 极高的付费用户占比,应该还是很有吸引力的。 iOS fly ~ - 94crazy
- 94crazy
- 94crazy
- cjiangjD版精神再现,为楼主打call!
- sis5595养肥了看
- 94crazy
- chaosmark一下 iOS fly ~
- 就这意思mark一下
- lollz大牛
- sharpmasterpinebook这机器关注过,有人说硬件用料不行,比如屏幕还闪烁,不如买同款芯片的chromebook刷linux