正如x86架构的芯片在后期不是一个纯粹的复杂指令集芯片一样,前世那些令外行人看得眼花缭乱的cpu系列一半因为自大而导致商业决策失误,一半是因为决策失误而强行让用户被绑架的缘故。
这就是在寻找未来路径的兼容和妥协!
x86-64和x86-32本来就是两套指令集,只不过做到了一个cpu上而已。可是为什么在一开始不把x86-32指令集和risc64-bit指令集做到一个cpu?
于是,amd就出手了,它的64-bitcpu兼容x86-32。可是amd也头脑犯浑,你兼容就兼容吧,你把新的64-bit指令集搞成csic干什么呢?不过它已经这么搞了,用户也认了,毕竟一时这是唯一支持x86-32的64-bitcpu。
结果,木已成舟。用户已经接受了amd那套cisc64-bit指令集,intel也不能改了。被绑架了。
而在普通市场难以看见的ibm的power系列的cpu,从一开始的定位就是精简指令集结构,专注于服务器市场和大型机,可惜由于与垄断个人操作系统的微软并不兼容,使得个人计算机的大客户苹果不得不选择逃离。
因为,微软的系统其实就是为x86指令集量身打造的。
所以,前世市面上那些cpu系列,如果不是专业人士,恐怕都不是能够分的很清楚,只能知道个大概。
这些让普通用户摸不着头脑的cpu系列,就是自大的以为自己已经统治了市场,所作出的错误决策,结果,所有的后果统统都只有用户买单,想不买单也不行,因为用户实在是没有选择。
所幸,苹果公司在自己的智能手机上,就很好地规避了这个错误,他的手机处理器,一直都是只有一个系列,而不像其他手机制造商那样,出了n多系列,用了n多的处理芯片,让用户想要买他的手机,都几乎要犯选择困难症。
苹果这样做的好处,就在于能给用户一个清晰无比的理念和比较,也能形成一个品牌效应,让用户在心里开始信任这个cpu系列,在这个基础上,苹果公司才开始着手研制ram架构的桌面级cpu。
其实,不止苹果公司有着这个觉悟,作为全球第一大个人电脑微处理器供应商—英特尔很早就开始考虑这个问题,并且还做出了尝试。
在前世的80年代末,英特尔面临一个选择,是继续设计和以前x86兼容的芯片还是转到精简指令的道路上去。如果转到精简指令的道路上,英特尔的市场优势会荡然无存:如果坚持走复杂指令的道路,它就必须逆着全世界处理器发展潮流前进。
在这个问题上,英特尔处理得很明智。首先,英特尔必须维护它通过x86系列芯片在微处理器市场上确立的领先地位。但是,万一复杂指令的处理器发展到头了,而精简指令代表了未来的发展方向,它也不能坐以待毙。
于是英特尔在推出过渡型复杂指令集的处理器80486的同时,推出了基于精简指令集的80860。这个产品事实证明不是很成功,显然,市场的倾向说明了用户对兼容性的要求比性能更重要。因此,英特尔在精简指令上推出80960后,就停止了这方面的工作,而专心做“技术落后”的复杂指令系列。
在整个20世纪90年代,只有英特尔一家坚持开发复杂指令集的处理器,对抗着整个处理器工业界。所以说,英特尔并没有拒绝新技术,它也曾经研制出两个不错的精简指令的处理器,只是看到它们前途不好时,立即停掉了它们。
所以,苹果公司想要研制arm架构的桌面级cpu,在x86指令集一统江山的基础上,向英特尔妥协是必不可少的,要不然他也不会抛弃合作了那么多年的ibm公司。
但是要将这两种架构合二为一,却并不是这么简单。
因为,在架构上,两者之间并不相同,在于设计者考虑问题方式的不同,具体实现的方式也就不同。
比如说我们要命令一个人吃饭,那么我们应该怎么命令呢?我们可以直接对他下达“吃饭”的命令,也可以命令他“先拿勺子,然后舀起一勺饭,然后张嘴,然后送到嘴里,最后咽下去”。
从这里可以看到,对于命令别人做事这样一件事情,不同的人有不同的理解,有人认为,如果我首先给接受命令的人以足够的训练,让他掌握各种复杂技能(即在硬件中实现对应的复杂功能),那么以后就可以用非常简单的命令让他去做很复杂的事情——比如只要说一句“吃饭”,他就会吃饭。
但是也有人认为这样会让事情变的太复杂,毕竟接受命令的人要做的事情很复杂,如果你这时候想让他吃菜怎么办?难道继续训练他吃菜的方法?我们为什么不可以把事情分为许多非常基本的步骤,这样只需要接受命令的人懂得很少的基本技能,就可以完成同样的工作,无非是下达命令的人稍微累一点——比如现在我要他吃菜,只需要把刚刚吃饭命令里的“舀起一勺饭”改成“舀起一勺菜”,问题就解决了,多么简单。
这就是x86和arm的逻辑区别。
这个区别导致了x86和arm分道扬镳——前者更加专注于高性能但同时高功耗的实现,而后者则专注于小尺寸低功耗领域。实际上也有很多事情x86更加合适,而另外一些事情则是risc更加合适,比如在执行高密度的运算任务的时候x86就更具备优势,而在执行简单重复劳动的时候arm就能占到上风。
比如假设我们是在举办吃饭大赛,那么x86只需要不停的喊“吃饭吃饭吃饭”就行了,而arm则要一遍一遍重复吃饭流程,负责喊话的人如果嘴巴不够快(即内存带宽不够大),那么arm就很难吃的过x86。但是如果我们只是要两个人把饭舀出来,那么x86就麻烦得多,因为x86里没有这么简单的舀饭动作,而risc就只需要不停喊“舀饭舀饭舀饭”就ok。
手机用户请浏览阅读,更优质的阅读体验。