正如x86架構(gòu)的芯片在后期不是一個(gè)純粹的復(fù)雜指令集芯片一樣,前世那些令外行人看得眼花繚亂的CPU系列一半因?yàn)樽源蠖鴮?dǎo)致商業(yè)決策失誤,一半是因?yàn)闆Q策失誤而強(qiáng)行讓用戶被綁架的緣故。
這就是在尋找未來路徑的兼容和妥協(xié)!
x86-64和x86-32本來就是兩套指令集,只不過做到了一個(gè)CPU上而已。可是為什么在一開始不把x86-32指令集和RISC64-bit指令集做到一個(gè)CPU?
于是,AMD就出手了,它的64-bitCPU兼容x86-32。可是AMD也頭腦犯渾,你兼容就兼容吧,你把新的64-bit指令集搞成CSIC干什么呢?不過它已經(jīng)這么搞了,用戶也認(rèn)了,畢竟一時(shí)這是唯一支持x86-32的64-bitCPU。
結(jié)果,木已成舟。用戶已經(jīng)接受了AMD那套CISC64-bit指令集,Intel也不能改了。被綁架了。
而在普通市場難以看見的IBM的power系列的CPU,從一開始的定位就是精簡指令集結(jié)構(gòu),專注于服務(wù)器市場和大型機(jī),可惜由于與壟斷個(gè)人操作系統(tǒng)的微軟并不兼容,使得個(gè)人計(jì)算機(jī)的大客戶蘋果不得不選擇逃離。
因?yàn)椋④浀南到y(tǒng)其實(shí)就是為X86指令集量身打造的。
所以,前世市面上那些CPU系列,如果不是專業(yè)人士,恐怕都不是能夠分的很清楚,只能知道個(gè)大概。
這些讓普通用戶摸不著頭腦的CPU系列,就是自大的以為自己已經(jīng)統(tǒng)治了市場,所作出的錯(cuò)誤決策,結(jié)果,所有的后果統(tǒng)統(tǒng)都只有用戶買單,想不買單也不行,因?yàn)橛脩魧?shí)在是沒有選擇。
所幸,蘋果公司在自己的智能手機(jī)上,就很好地規(guī)避了這個(gè)錯(cuò)誤,他的手機(jī)處理器,一直都是只有一個(gè)系列,而不像其他手機(jī)制造商那樣,出了N多系列,用了N多的處理芯片,讓用戶想要買他的手機(jī),都幾乎要犯選擇困難癥。
蘋果這樣做的好處,就在于能給用戶一個(gè)清晰無比的理念和比較,也能形成一個(gè)品牌效應(yīng),讓用戶在心里開始信任這個(gè)CPU系列,在這個(gè)基礎(chǔ)上,蘋果公司才開始著手研制RAM架構(gòu)的桌面級CPU。
其實(shí),不止蘋果公司有著這個(gè)覺悟,作為全球第一大個(gè)人電腦微處理器供應(yīng)商—英特爾很早就開始考慮這個(gè)問題,并且還做出了嘗試。
在前世的80年代末,英特爾面臨一個(gè)選擇,是繼續(xù)設(shè)計(jì)和以前x86兼容的芯片還是轉(zhuǎn)到精簡指令的道路上去。如果轉(zhuǎn)到精簡指令的道路上,英特爾的市場優(yōu)勢會蕩然無存:如果堅(jiān)持走復(fù)雜指令的道路,它就必須逆著全世界處理器發(fā)展潮流前進(jìn)。
在這個(gè)問題上,英特爾處理得很明智。首先,英特爾必須維護(hù)它通過x86系列芯片在微處理器市場上確立的領(lǐng)先地位。但是,萬一復(fù)雜指令的處理器發(fā)展到頭了,而精簡指令代表了未來的發(fā)展方向,它也不能坐以待斃。
于是英特爾在推出過渡型復(fù)雜指令集的處理器80486的同時(shí),推出了基于精簡指令集的80860。這個(gè)產(chǎn)品事實(shí)證明不是很成功,顯然,市場的傾向說明了用戶對兼容性的要求比性能更重要。因此,英特爾在精簡指令上推出80960后,就停止了這方面的工作,而專心做“技術(shù)落后”的復(fù)雜指令系列。
在整個(gè)20世紀(jì)90年代,只有英特爾一家堅(jiān)持開發(fā)復(fù)雜指令集的處理器,對抗著整個(gè)處理器工業(yè)界。所以說,英特爾并沒有拒絕新技術(shù),它也曾經(jīng)研制出兩個(gè)不錯(cuò)的精簡指令的處理器,只是看到它們前途不好時(shí),立即停掉了它們。
所以,蘋果公司想要研制ARM架構(gòu)的桌面級CPU,在X86指令集一統(tǒng)江山的基礎(chǔ)上,向英特爾妥協(xié)是必不可少的,要不然他也不會拋棄合作了那么多年的IBM公司。
但是要將這兩種架構(gòu)合二為一,卻并不是這么簡單。
因?yàn)椋诩軜?gòu)上,兩者之間并不相同,在于設(shè)計(jì)者考慮問題方式的不同,具體實(shí)現(xiàn)的方式也就不同。
比如說我們要命令一個(gè)人吃飯,那么我們應(yīng)該怎么命令呢?我們可以直接對他下達(dá)“吃飯”的命令,也可以命令他“先拿勺子,然后舀起一勺飯,然后張嘴,然后送到嘴里,最后咽下去”。
從這里可以看到,對于命令別人做事這樣一件事情,不同的人有不同的理解,有人認(rèn)為,如果我首先給接受命令的人以足夠的訓(xùn)練,讓他掌握各種復(fù)雜技能(即在硬件中實(shí)現(xiàn)對應(yīng)的復(fù)雜功能),那么以后就可以用非常簡單的命令讓他去做很復(fù)雜的事情——比如只要說一句“吃飯”,他就會吃飯。
但是也有人認(rèn)為這樣會讓事情變的太復(fù)雜,畢竟接受命令的人要做的事情很復(fù)雜,如果你這時(shí)候想讓他吃菜怎么辦?難道繼續(xù)訓(xùn)練他吃菜的方法?我們?yōu)槭裁床豢梢园咽虑榉譃樵S多非常基本的步驟,這樣只需要接受命令的人懂得很少的基本技能,就可以完成同樣的工作,無非是下達(dá)命令的人稍微累一點(diǎn)——比如現(xiàn)在我要他吃菜,只需要把剛剛吃飯命令里的“舀起一勺飯”改成“舀起一勺菜”,問題就解決了,多么簡單。
這就是X86和ARM的邏輯區(qū)別。
這個(gè)區(qū)別導(dǎo)致了X86和ARM分道揚(yáng)鑣——前者更加專注于高性能但同時(shí)高功耗的實(shí)現(xiàn),而后者則專注于小尺寸低功耗領(lǐng)域。實(shí)際上也有很多事情X86更加合適,而另外一些事情則是RISC更加合適,比如在執(zhí)行高密度的運(yùn)算任務(wù)的時(shí)候X86就更具備優(yōu)勢,而在執(zhí)行簡單重復(fù)勞動(dòng)的時(shí)候ARM就能占到上風(fēng)。
比如假設(shè)我們是在舉辦吃飯大賽,那么X86只需要不停的喊“吃飯吃飯吃飯”就行了,而ARM則要一遍一遍重復(fù)吃飯流程,負(fù)責(zé)喊話的人如果嘴巴不夠快(即內(nèi)存帶寬不夠大),那么ARM就很難吃的過X86。但是如果我們只是要兩個(gè)人把飯舀出來,那么X86就麻煩得多,因?yàn)閄86里沒有這么簡單的舀飯動(dòng)作,而RISC就只需要不停喊“舀飯舀飯舀飯”就OK。