正如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。