来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

为何M1芯片能运行X86指令集程序?

要解释这个问题,要先从CPU架构谈起。

CPU架构一般分为精简指令集(RISC)和复杂指令集(CISC),精简指令集通常只支持一些取、存等使用频率很高的基础指令,复杂指令集除了这些基础指令外还支持了很多的复合指令,即一条指令干了很多事情,但复杂指令集性能比精简指令集高得多。所以精简指令集因为简单,造价上也低廉很多。

X86架构的CPU,属于复杂指令集。

Arm架构的CPU,属于精简指令集。

为了更清楚的了解两种架构的区别,这里我们做一个比喻,把两种CPU比作两个厨子。

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

厨子A年纪比较轻,会做的菜不多,你必须告诉他什么时候倒油,什么时候放盐,最终才能做出菜,优点是工资特别低,很便宜。

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

厨子B年纪比较大,会做很多菜,你只需要告诉他菜名他就可以做出菜,但是工资很高,很贵。

雇佣了厨师A的饭店,工作流程如下:

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

餐厅老板告诉厨师A每一个详细的步骤,最终做成了西红柿炒鸡蛋。

再来看看雇佣了厨师B的饭店,工作流程如下:

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

餐厅老板只需要说出菜名就可以了。

这里厨师A就是精简指令集,只支持一些最基础的指令,厨师B就是复杂指令集,有一些指令看着只有一条,但是CPU做了很多事情。那么两个餐厅的老板就是调度CPU的程序,对于精简指令集的CPU,运算时要用基础指令组合复杂的运算过程。而对于复杂指令集,复杂的运算可以直接使用CPU支持的复杂指令完成。

从去年开始,苹果的电脑开始使用了自研的M1芯片,就好比餐厅的厨子从厨师B换到了厨师A,但是我们之前编写的程序没有变,还是针对厨师B的,那么会出现什么情况呢?

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

按道理来说,厨师A是完全听不懂经理B的指令的。但是实际情况却是正常运行了。什么原因呢?

这就要说到指令翻译了,经理B发现厨师A听不懂自己的指令,于是请了一位翻译过来,结果如下:

来自网络的解释~为何M1芯片的MacBook上能运行X86指令的CBrother?

这样,经理B的指令没变,厨师A收到的指令也没变,但是正常出菜了。

这个翻译就是苹果的Rosetta2技术,他是一个跑在苹果系统里的软件系统,x86指令能在M1芯片上运行,就是因为Rosetta2翻译了指令,这才让X86指令的CBrother在M1芯片上正常跑起来。

聊点题外话

为什么叫Rosetta2,因为早期苹果从PowerPC 向x86过渡时候就引入了翻译技术,起名为Rosetta,这次从x86向Arm过渡又旧技重施,直接起名Rosetta2。很佩服苹果的工程师这么随意,感觉就跟我自己写了个测试工程test,创建第二个测试工程时懒得起名字直接叫test2一样,瞬间感觉自己跟国际接轨了。

声明:本站文章,有些原创,有些转载,如发现侵权侵请联系删除。本站所有原创帖均可复制、搬运,开网站就是为了大家一起乐乐,不在乎版权。对了,本站小水管,垃圾服务器,请不要采集,吐槽君纯属用爱发电,经不起折腾。

给TA打赏
共{{data.count}}人
人已打赏
技术宅

iOS/iPadOS 15.4正式版重磅发布:支持戴口罩解锁

2022-3-15 13:22:37

技术宅

【万事屋转载】文件夹备份利器微软免费软件SyncToy

2022-3-17 8:28:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索