[深度文系列] x86與ARM,複雜指令集與精簡指令集


隨著Apple推出最新的ARM架構晶片,越來越多人開始問到底ARM架構和intelx86架構有什麼不同,本篇將會介紹ARMx86架構,並介紹兩者之間的差異。

x86架構


(Source: kknews.cc)


x86屬於 複雜指令集計算機(CISC)架構,早期為了節省程式設計師的設計時間,開發出單一指令包含複雜操作的程式碼,來簡化設計程式所需的程式行數,當時幾乎所有CPU都是採用CISC架構。

優點:

x86屬於CISC架構,特點是可以為工程師在開發軟體時節省很多時間,也可以讓新系統使用一個包含舊系統的指令集合,這樣就可以在新系統上使用舊系統的軟體。簡而言之就是對開發軟體的工程師來說使用CISC架構是省時而且輕鬆的。

缺點:

為了將更多的指令打包進一個小小的CPU上,就會需要將更多複雜的電晶體設計在晶片上,而更強大的功能就意味著更複雜的設計,如此便會導致像是耗電、高發熱量,並且由於x86自家設計上會先用解碼器先將複雜指令變成類似於RISC的指令,再給核心執行,這樣一來整體上執行工作效率會變得比較差,處理資料速度也會比較慢。


ARM架構


(Source: Apple)


ARM屬於 精簡指令集計算機(RISC)架構,相較於CISCRISC架構只包含簡單基本的指令,再用這些基本的指令組合成複雜指令,最廣泛的應用是在手機晶片上,早期的手機晶片因為功能較簡單,體積也不能太大,因此只包含簡單基本指令的RISC架構晶片就比複雜的CISC架構晶片更適合作為手機的計算晶片。

 

優點:

因為相較於x86架構,ARM所屬的RISC架構不需要複雜的晶片設計,所以RISC在相同晶片條件下RISC的執行速度是CISC2-4倍。而且可以做到讓晶片體積縮小、降低功耗、節省成本、提高效能,並且也可以比CISC應用更多先進技術來開發下一代晶片。

 

缺點:

ARM因為是RISC架構,晶片上只有基本且簡單的指令,這樣工程師在寫程式碼執行相同任務時,RISC架構相較CISC架構就需要寫更多程式,打個比方,現在要寫程式執行丟雞蛋這個任務:


CISC架構下工程師只要寫『拿起雞蛋>丟出雞蛋』這樣簡單的指令


而在RISC架構下,工程師需要將動作分解成多個步驟,就要寫成『朝雞蛋伸出手臂>用手抓住雞蛋>將手臂伸回>將手臂抬起>手臂朝目標方向甩動>手放開雞蛋』。


因此工程師會需要花更多時間在編輯程式碼,軟體開發時間增加,軟體所占容量也會增加。



(Source: macw.com)


小結:

X86架構所採用的複雜指令所帶來的速度提升早已經被花費在解碼上的時間所抵銷甚至拖慢,另外因為x86架構的晶片設計較為複雜,x86架構晶片會在製成上比ARM架構晶片還要難生產。

另外x86架構晶片也會比較耗能,發熱量也較大,因此目前除了個人電腦因為x86平台還有大量相容的軟體生態所以還在用x86外,ARM及其他RISC架構的指令集已經成為當今最流行的晶片架構。舉凡手機,平板及目前當紅的物聯網都是採用RISC架構的指令集。

但話又說回來,雖然現在CISCRISC看似不同的兩種架構,不過隨著兩者的發展,CISC會需要克服耗能,運算速度的問題;而RISC的設計也正在變得複雜 (不是向著CISC的方向),兩者之間的界線將隨著世代更迭變得越來越模糊。

或許在未來的某一天兩者將難以分辨,但可以確定隨著兩者的發展及碰撞,終將為人類帶來更快更節能的晶片。