通俗講解什麼是指令集及ARM封殺對華為的影響

朱祺qiqi 發佈 2020-01-21T14:18:42+00:00

計算機語言經過不斷發展分為三個層次,高級語言、彙編語言和機器語言。1、機器語言我們人類在計算數字的時候習慣於用10進位的表示方法,據說是因為人類有10根手指的關係。

計算機語言經過不斷發展分為三個層次,高級語言、彙編語言和機器語言。

1、機器語言

我們人類在計算數字的時候習慣於用10進位的表示方法,據說是因為人類有10根手指的關係。但是對計算機來說靠的是高低電平來表示所有的信息,在這個前提下要以10進位的方式表示信息就比較複雜,最適合計算機的表示方式就是高電平代表1,低電平代表0,所有的信息都是以0和1的組合方式來表示,不管是簡單的加法還是微信還是遊戲,本質上就是0和1組成的指令進行計算的結果。因此以0和1組成的指令是計算機最底層的語言,事實上計算機也僅能理解這種溝通方式,這種語言叫機器語言。


2、彙編語言

機器語言的問題在於人類要傳遞給計算機任何信息都必須以0和1的組合序列表達,不符合人類的溝通習慣,因此有了助記符的概念並在這個基礎上產生了彙編語言,通俗來說我們需要將1+2這種信息表達為計算機可接受的0和1的組合,因為人類更能接受1+2這種表達方式,而計算機只能接受0和1的表達方式,彙編語言就是初步解決了人類和計算機的溝通難度,提高了溝通效率。


3、指令集的作用

以下以實際ARMv8指令集舉一個最簡單的加法例子來說明指令集的作用。

高級語言語句:1+2

彙編語言語句:ADD X9(存放1+2的結果),X10(存放1),X11(存放2)

在編譯成機器語言時,需要解決幾個問題:

(1) 怎麼讓計算機明白ADD是什麼意思

(2) 怎麼讓計算機以0和1的組合序列表達1+2這個計算指令

先解決第一個問題,晶片廠商定義一串序列表示加法,根據ARMv8指令集,1112(十進位)代表加法,進一步表示為二進位為10001011000(二進位)。

解決第二個問題分為兩個步驟,通俗來說就是單詞和語法,單詞的翻譯結果為ADD=1112(十進位)=10001011000(二進位);X9寄存器=9(十進位)=1001(二進位);X10寄存器=10(十進位)=1010(二進位);X11寄存器=11(十進位)=1011(二進位)。之後是語法也就是按照什麼順序讓計算機讀懂以及每個二進位欄位所占的位數。ARMv8指令集對於加法的指令格式如下:

這裡忽略位移量這個參數,按照指令格式將1+2填入此表:

最終根據ARMv8指令集,1+2的機器語言指令為10001011000010110000000101001001。


4、ARM封殺對華為的影響

目前採用發布於2011年的ARMv8指令集的公司有蘋果公司、高通、華為等,ARM本身是一家設計公司不生產晶片,採用不同等級的授權方式授權晶片製造廠根據其設計製造晶片,根據其授權生產的晶片就必須採用其指令集。根據以上例子,ARM架構的晶片認為操作碼1112代表加法,目前蘋果、高通、華為的晶片都認為1112代表加法。封殺華為後,華為採用自己的晶片就有自己的指令集,在新的指令集下,1112未必代表加法並且同樣要表示1+2,指令結構也就是語法也會不一樣。由於機器語言是最底層並且計算機唯一能讀懂的語言,指令集的改變就涉及所有的上層程序的重寫,重中之重就是作業系統。無法要求同一個作業系統適應不同的指令集。所以相對技術,晶片的市場占有率是指令集能否成為公認標準的唯一指標,而ARM架構的晶片在目前移動端的市場占有率接近壟斷。中國移動設備是一個巨大的市場,客觀分析,並不是ARM封殺華為後華為就會倒掉,只要市場足夠大,採用華為晶片和指令集的設備足夠多,華為晶片就會打破ARM壟斷的格局成為和ARM並列的晶片設計方,甚至如果晶片性能能夠超越ARM架構的晶片的情況下,華為晶片將會在移動端市場與蘋果高通平分秋色。一切還是華為技術是否足夠強大,像其5G技術一樣位居世界前列並能讓市場接受和歡迎。

關鍵字: