說到這兒大家應(yīng)該也已經(jīng)明白CISC和RISC的區(qū)別和特色了。簡而言之,CISC實際上是以增加處理器本身復(fù)雜度作為代價,去換取更高的性能,而RISC則是將復(fù)雜度交給了編譯器,犧牲了程序大小和指令帶寬,換取了簡單和低功耗的硬件實現(xiàn)。但如果事情就這樣發(fā)展下去,為了提升性能,CISC的處理器將越來越大,而RISC需要的內(nèi)存帶寬則會突破天際,這都是受到技術(shù)限制的。所以進十多年來,關(guān)于CISC和RISC的區(qū)分已經(jīng)慢慢的在模糊,例如自P6體系(即Pentium Pro)以來,作為CISC代表的X86架構(gòu)引入了微碼概念,與此對應(yīng)的,處理器內(nèi)部也增加了所謂的譯碼器,負責將傳統(tǒng)的CISC指令“拆包”為更加短小的微碼(uOPs)。一條CISC指令進來以后,會被譯碼器拆分為數(shù)量不等的微碼,然后送入處理器的執(zhí)行管線——這實際上可以理解為RISC內(nèi)核+CISC解碼器。而RISC也引入了指令集這個就邏輯角度而言非常不精簡的東西,來增加運算性能。正常而言,一條X86指令會被拆解為2~4個uOPs,平均來看就是3個,因此同樣的指令密度下,目前X86的實際指令執(zhí)行能力應(yīng)該大約是ARM的3倍左右。不過不要忘了這是基于“同樣指令密度”下的一個假設(shè),實際上X86可以達到的指令密度是十倍甚至百倍于ARM的。
最后一個需要考慮的地方就是指令集。這個東西的引入,是為了加速處理器在某些特定應(yīng)用上性能而設(shè)計的,已經(jīng)有了幾十年的歷史了。而實際上在目前的應(yīng)用環(huán)境內(nèi),起到?jīng)Q定作用的很多時候是指令集而不是CPU核心。X86架構(gòu)的強大,很多時候也源于指令集的強大,比如我們知道的ATOM,雖然它的X86核心非常羸弱,但是由于它支持SSE3,在很多時候性能甚至可以超過核心性能遠遠強大于它的Pentium M,這就是指令集的威力。目前X86指令集已經(jīng)從MMX,發(fā)展到了SSE,AVX,而ARM依然還只有簡單而基礎(chǔ)的NEON。它們之間不成比例的差距造成了實際應(yīng)用中成百上千倍的性能落差,例如即便是現(xiàn)今最強大的ARM內(nèi)核依然還在為軟解1080p H.264而奮斗,但一顆普通的中端Core i處理器卻可以用接近十倍播放速度的速度去壓縮1080p H.264視頻。至少在這點上,說PC處理器的性能百倍于ARM是無可辯駁的,而實際中這樣的例子比比皆是。這也是為什么我在之前說平均下來ARM只有X86幾十分之一的性能的原因。
打了這么多字,其實就是為了說明一點,雖然現(xiàn)在ARM很強大,但它距離X86還是非常遙遠,并沒有因為這幾年的進步而縮短,實際上反而在被更快的拉大。畢竟它們設(shè)計的出發(fā)點不一樣,因此根本不具備多少可比性,X86無法做到ARM的功耗,而ARM也無法做到X86的性能。這也是為什么ATOM一直以來都不成功的原因所在——Intel試圖用自己的短處去和別人的長處對抗,結(jié)果自然是不太好的,要不是Intel擁有這個星球上最先進的半導(dǎo)體工藝,ATOM根本都不可能出現(xiàn)。而ARM如果嘗試去和X86拼性能,那結(jié)果自然也好不到哪兒去,原因剛剛也解釋過了。不過這也不意味著ARM以后就只能占據(jù)低端,畢竟任何架構(gòu)都有其優(yōu)點,一旦有應(yīng)用針對其進行優(yōu)化,那么就可以揚長避短。X86的繁榮也正是因為整個世界的資源都針對它進行了優(yōu)化所致。只要能為ARM找到合適的應(yīng)用與適合的領(lǐng)域,未來ARM也未必不可以進入更高的層次。