龍芯採用自有編譯器
『壹』 龍芯處理器是risc架構嗎為什麼只支持linux
是
MIPS 一種RISC的處理器(ARM也是)
構架問題啊 要看系統支不支持 而不是支持不支持某個系統(其實就是市場行為決定的)。。。
Linux。。。可是最大的系統。。(不是說桌面PC系統佔有率 比如安卓的就是基於linux的還有很多嵌入式設備用的系統。。)
『貳』 如何看待國產龍芯處理器
但這個團隊完全沒有市場思維,不懂市場經濟,不懂杠杠原理。因此,即使再給20年,也還是一個市場邊緣產品。
龍芯公司體量太小,人手嚴重不足,專職從事開發工作的工程師數量更缺,這是一個不爭的事實。
針對這個現狀,龍芯應該效仿ARM公司初期枝辯在自己弱小的時候走組隊模式(傻子才會指望幾百名工程師真的能擊敗英特爾AMD數萬名工程師團隊)。龍芯公司主動放棄開發具體的晶元產品,集中精力開發新一代ip核,切實提高新一代ip核的性能,然後將ip核授權給其他公司開發具體的晶元產品。
當前,包括中國在內的很多國家認識到過度依賴美國的英特爾和AMD的產品,會導致國家安全存在巨大的漏洞。想擺脫,自己又搞不定。這時候如果有一家公司能夠出售ip核幫助這些國家盡快推出自己的計算機晶元來平衡因特爾和AMD的影響,我相信很多國家會樂觀其成。像俄羅斯、印度、韓國、歐洲各國,想擺脫美國英特爾和AMD的國家真的是太多了。
在國內,可以把ip核授權給華為、聯想、浪潮、紫光等公司。這樣一來,龍芯相關產品的開發人員迅速壯大到數十萬工程師,與之相關的從業人員達到數百萬,完全不是夢。
雖然性能不如intel,但是真正的自主可控,是純正的中國芯。
一、龍芯的自主可控
龍芯真正立項是2001年左右,當時奔著就是自主可控的方向去做的,所以選擇了MIPS架構,並且直接買了下來,別人不再使用了,而不是所謂的授權,不像ARM這種。
在買下MIPS架構之後,龍芯團隊還擴展了指令集,可以說龍芯是來源於MIPS,但又脫胎於MIPS,是從架構開始就屬於自主可控的中國芯,是純正的中國芯。
也正因為如此,所以目前龍芯在政府、軍事、金融、教育等眾多行業,對保密性有要求的領域,對安全可控非常重視的領域,得到了大量的使用。
二、龍芯的性能
對於一款晶元,自然是要考慮性能的,目前龍芯的性能和intel比較起來,確實有3-5年左右的差距,所以個人消費者對龍芯沒什麼感知,因為龍芯也沒有面向個人消費領域,因為這個領域喜歡「不服跑個分」,自然龍芯很難得到認可。
更重要的是,個人消費領域,對生態要求很高,目前windows只能安裝在X86架構的intel\AMD晶元上,不支持龍芯,所以使用龍芯的筆記本、台式機非常少。
三、龍芯的意義
另外,目前很多人對於龍芯有誤解,覺得這晶元性能不行,完全是在靠政府補貼的貨,但其實還真不是的,國家早就不補貼龍芯了。
龍芯現在是商業化動作,完全的自負盈虧的,並且在2014年龍芯就實現了盈利,2019年利潤有1億多,這些年以來龍芯納的稅早已經超過了政府給予的補貼,所以不要拿騙補來說龍芯。
龍芯一旦成功,將真正的使中國芯擺脫國外的依賴,畢竟ARM還要依賴ARM架構,但龍芯啥都不依賴,完全的100%純正中國芯,意義重大,值得大家支持。
龍芯是基於MIPS指令集來的,而且獲得了相關指令集的永久授權,可以說在指令集等知識產權上面龍芯不存在被卡脖子的問題了,不過因為MIPS指令集在目前的市場上已經沒有什麼地位,所以其應用領域比較有限,起碼在消費級市場上面是看不到多少希望了,消費市場上的PC主要是X86架構處理器,而手機等中端主要是ARM處理器,根本就沒有留給龍芯多少空間,雖然很多人說龍芯的性能達到了英特爾某些產品的多少多少,或者達到了AMD挖土機多少多少的性能,但是因為架構不同,攜圓實際上這種對比對於普通用戶意義不大,因為目前普通消費者的生態對龍芯的支持很差,就算能夠運行Windows系統,那也是模擬的,表現自然會打折扣。
雖然龍芯在消費級大眾市場上面沒有什麼起色,但是在一些細分領域還是可以慢慢發展的,而且有龍芯的技術在手,起碼解決了有還是沒有的問題,在面對國外的競爭時,底氣足一些,而且龍芯的研發和應用發展過程中,也培育了自己的人才,所以長遠來看,龍芯的意義還是不小的,所以初期龍芯的發展還是以政府扶持為主,後來龍芯開始自負盈虧,到了2015年據說已經開始盈利了,這點還是很不錯的,算是洗刷了當年漢芯的 歷史 恥辱吧,當然還是會有很猛隱缺多人質疑龍芯,估計是因為漢芯當年的負面影響太大了吧。
當然很多人會拿ARM和MIPS相比較,因為二者都是精簡指令集的處理器,二者之間當然有不少差異,但是MIPS對商業不敏感,錯失了移動化的浪潮,所以雖然MIPS出現的比ARM還要早,而且當初在性能上並不輸於ARM,但是因為沒有把握住機會,這些年MIPS的發展並不理想,ARM這些年反而發展很快,MIPS被拆分,然後賣來賣去的,基本上已經GG了,至於今後MIPS還有沒有機會,目前來看,難度比較大就是了,不過我們還是希望龍芯能夠在未來發展起來。
可以說,龍芯最能提現軍事應用上晶元的自主可控。
2015年3月,由中科院負責研製的新一代導航衛星I1-S(北斗三號首發星)首次使用了中國製造的「龍芯」中央處理器(CPU)。之後發射的每一顆北斗導航衛星都配備了大量的龍芯。這些龍芯除了當CPU外,最典型的一個應用就是可重構技術。也就是說在軌衛星的軟體隨時可以通過地面上注進行重構,這就大大提高了軟體的生存能力。從五年的實際應用來看,龍芯1E和龍芯1F的在軌性能還是要更好一些,處理能力和可靠性也與進口CPU持平,當然價格會是進口的一半。
龍芯是中科院北京計算機所研發,龍芯成立的目標只有一個,那就是全球第一的晶元帝國 Intel。但是目前看來,龍芯軍事應用居多,普及商用還是任重而道遠。
最有前景難度最大最自主的國產處理器 持續關注龍芯15-16年了 現在送去流片的3A5000CPU有望單核跑到2.5ghz 30分(轉自知乎:2017年AMD在3.4G赫茲下使用gcc4.6編譯器優化參數-o2,3代CPU的spec int06測試值分為:打樁機20.7 ;挖掘機19.2 ;ryzen31.5)看樣子還算不錯。
龍芯設計團隊是國內內功最扎實的團隊之一,龍芯老大胡偉武的目標是三分天下有其一 不同於其他國產CPU 可以搭上現有成熟生態體系的快車從而高速發展 龍芯要自建生態 打造一個不受外部環境制約的第三套軟體體系(圖片內有個別廠家預測分數)
關於龍芯的簡介
一直以來,因為曾經漢芯騙局以及可能存在的故意混淆,很多人對龍芯要麼不了解、要麼誤解,還有人是因為沒看到龍芯CPU出現在普通電腦中從而認為龍芯也是騙局。就此問題我在這里簡單介紹一下龍芯是怎麼回事。
龍芯的團隊:
龍芯團隊由中科院計算所研究員胡偉武任總師於2001年起步,並於2002年正式獲得立項並得到500萬人民幣的研發資金,至2010年龍芯團隊成立公司以前,總共獲得國家資金五億人民幣,對比英特爾公司2015年一年的研發投入124億美元、2017年一年研發投入不低於130億美元,龍芯九年間的資金合計連人家一年的零頭都差遠了。不過很奇怪,龍芯從2011年起就不拿扶持資金了、只拿過北京市政府和其它公私營機構和企業的合計兩億人民幣的投資,但還是有大量帖子到處宣揚龍芯騙經費,而且動不動就指責龍芯騙取上百億千億經費!
龍芯的指令集:
一開始龍芯直接採用了MIPS指令集,在金融危機期間低價購買了MIPS指令集527條指令的永久授權,後來根據自己的規劃修改並增加到1907條指令,因此現在是具備自主知識產權的龍芯指令集(loogISA),已經不能叫做MIPS指令集了,1907條指令基本情況如下:
源自MIPS的指令:
216條MIPS基礎指令,獲得永久授權;
311條DSP指令,獲得永久授權。
龍芯自主指令:
MIPS基礎指令擴展——148條loongEXT;
虛擬機擴展——5條loongVM指令;
二進制翻譯擴展——213條loongBT;
向量指令擴展——1014條loongSIMD。
龍芯目前的型號命名:
龍芯1系列:分別是面向特種、嵌入應用;
龍芯2系列:面向高端嵌入、工控、特種應用、伺服器、桌面;
龍芯3系列:用於PC、伺服器、高級特種應用,其中3A是四核、3B是不低於3A的可多路互聯(常用於伺服器)。
龍芯7:目前定位是橋片,也就是南北橋晶元,現只有一款龍芯7A-1000,其中還集成了龍芯自研的第一款GPU,估計其圖形性能不會比十年前的主板集顯更好,但至少普通日常應用是可以的,而且該橋片支持獨顯,可以用英偉達或AMD的顯卡來提高性能,並且龍芯正在與英偉達開展合作。
龍芯的性能:
2015年,基於大改內核GS464E、使用國內40nm低速工藝製造的主頻1GHz的龍芯3A-2000四核CPU的單核性能測試SPEC CPU2006分值6~7分,達到了GS464單核的3倍左右;2016年最高主頻1.5GHz的龍芯3A-3000測SPEC CPU2006單核分值11、四核分值36,也就是說SPEC CPU2006測試下,龍芯GS464E內核的每GHz得分為7分,距離AMD和英特爾的每GHz得分10~15分還有距離。
2019年12月24日發布的基於新研發GS464V內核的龍芯3A/B-4000每GHz分值提高到10分,主頻提高到2.0GHz,因此得分21分,接近了AMD前兩年的挖掘機CPU,距離英特爾和AMD現在主流的得分在30~40分的CPU差距已經不太大了。
龍芯的經營:
當然,微軟和谷歌不可能給龍芯做兼容,因此雖然龍芯通過二進制模擬X86指令的方式實現了安裝運行WindowsXP,但較大軟體和專業性的軟體(比如PS、股票、 游戲 等軟體)還不能使用,這樣一來龍芯還不能正常使用Windows和安卓,那麼龍芯目前就無法進入消費產業領域,普通用戶自然就看不到龍芯處理器。
所以,龍芯團隊於2010年離開中科院成立龍芯公司開始自負盈虧以後,起步靠北京市政府天使投資近兩億人民幣維持存在,從低端嵌入領域起步,擴展到行業領域和特種、定製領域,畢竟作為企業得自己賺錢生存,能活下來才談得上理想,不過龍芯在行業領域混的還不錯,上到網路伺服器、存儲伺服器、衛星用的抗輻照處理器,中到行業定製電腦、機頂盒、電視機CPU、軍用指揮控制系統、高溫高壓等特種處理器,下至紅綠燈、充電樁等低端嵌入等等應用場景都在做,同時也在做軟體等業務。
2015年龍芯實現扭虧為盈,除持續增長的嵌入和特種等領域業務以外,龍芯桌面應用也開始增長,2018年龍芯桌面CPU銷售5萬片,佔中國桌面電腦CPU市場份額的0.1%;2019年龍芯CPU中的桌面用CPU銷售達50萬片,占國內桌面CPU市場份額的1%;
胡偉武說,以前龍芯連英特爾的影子都看不到,2020年龍芯從性能上可以看到英特爾的後腦勺,並在局部形成體系,在行業市場領域應該能做到國內企業第一位,之後會擴展業務逐漸向消費領域進軍,爭取到2030年後能與英特爾、AMD、IBM同台競技。
註:有興趣可以在B站搜索「龍芯」,可以找到2019年4月19日龍芯公司的張福新博士在山東大學做了題目為《從inside到outside,龍芯的發展和產業生態建設》的演講,2019年6月龍芯總師胡偉武在中山大學的演講,2019年12月24日龍芯發布會中胡偉武的演講,這些裡面有超出一般想像的信息,比如:通過這兩年的局部試點,公務員用的設備即將大規模使用龍芯設備;龍芯在軍用裝備領域已經呈面上鋪開趨勢、還為軍隊製作了數字地球,結合以前的信息來看(官方主動講的,不涉及泄密),龍芯軍用范圍至少包括指揮控制、導彈制導、精確定位、坦克等戰車控制或火控系統、軍用信息系統;等等等等
必須要有存在
龍芯必須存在,別家的石頭,不可靠!
虛心向優秀的企業學習,堅持獨立自主,這樣才能發展有底氣。
支持國產,說明國家晶元更上一層樓。
『叄』 龍芯1b linux下 程序用什麼編譯執行
Linux下C程序的編輯,編譯和運行以及調試
要使用的工具:
編輯:vim(vi)
編譯和運行:gcc
調試:gdb
安裝很簡單(以下是以在CentOS中安裝為例):
1
yum vim gcc gdb
1.使用vim編輯源文件
首先,打開終端練下手:
1
vim hello.c
(進入一般模式)
按下"i",進入編輯模式,在編輯模式下輸入:
1
#include <stdio.h>
2
int main(){
3
printf("Hello, World!\n");
4
return 0;
5
}
輸入完成,按"ESC"鍵,回到一般模式,然後按下":wq",即可保存並退出vim。
附註:
在一般模式下,按下":%!xxd"查看hello.c的16進制形式,回到文本格式按下":%!xxd -r"。
查看hello.c的二進制形式,按下":%!xxd -b",這是hello.c保存在磁碟上的存儲狀態。
至此,在vim已完成C源文件的編輯。
關於vim的使用,直接上網搜索vim,相關的文章是相當多的;或者參考vim的聯機幫助,在命令行上鍵入"man vim"即可。
2.編譯和運行
gcc命令的基本用法:
1
gcc[options] [filenames]
其中,filenames為文件名;options為編譯選項
當不使用任何編譯選項編譯hello.c時,gcc將會自動編譯產生一個a.out的可執行文件:
1
[root@localhost c]# ls
2
hello.c
3
[root@localhost c]# gcc hello.c
4
[root@localhost c]# ls
5
a.out hello.c
執行:
1
[root@localhost c]# ./a.out
2
Hello, World!
使用-o編譯選擇,可以為編譯後的文件指定一個名字:
1
[root@localhost c]# ls
2
a.out hello.c
3
[root@localhost c]# gcc hello.c -o hello
4
[root@localhost c]# ls
5
a.out hello hello.c
執行:
1
[root@localhost c]# ./hello
2
Hello, World!
注意:使用-o選項時,-o後面必須跟一個文件名,即:-o outfile。
為了便於描述後面的選項,刪除hello和a.out可執行文件。
結合介紹gcc的編譯選項,分析hello.c的編譯和執行過程:
(1)預處理階段:使用-E選項,對輸入文件只做預處理不編譯。當使用這個選項時,預處理器的輸出被送到標准輸出而不是存儲到文件。如果想將預處理的輸出存儲到文件,可結合-o選項使用,使用如下:
1
[root@localhost c]# ls
2
hello.c
3
[root@localhost c]# gcc -E hello.c -o hello.i
4
[root@localhost c]# ls
5
hello.c hello.i
使用less查看下hello.i:
1
[root@localhost c]# less hello.i
(2)編譯階段:使用-S選項,將C程序編譯為匯編語言文件後停止編譯,gcc編譯產生匯編文件的默認後綴為.s。
1
[root@localhost c]# ls
2
hello.c hello.i
3
[root@localhost c]# gcc -S hello.c
4
[root@localhost c]# ls
5
hello.c hello.i hello.s
在gcc -S hello.c處,使用C源文件編譯,也可以用gcc -S hello.i的預處理文件編譯,結果一樣。
使用-S編譯時,也可以和-o結合使用指定編譯產生的匯編語言文件的名字:
1
[root@localhost c]# ls
2
hello.c hello.i hello.s
3
[root@localhost c]# gcc -S hello.i -o hello_s.s
4
[root@localhost c]# ls
5
hello.c hello.i hello.s hello_s.s
可使用less命令查看匯編代碼。
(3)匯編階段:使用-c選項,將C源文件或者匯編語言文件編譯成可重定向的目標文件(二進制形式),其默認後綴為.o。
1
[root@localhost c]# ls
2
hello.c hello.i hello.s hello_s.s
3
[root@localhost c]# gcc -c hello.s
4
[root@localhost c]# ls
5
hello.c hello.i hello.o hello.s hello_s.s
也可以和-o結合使用指定編譯產生的目標文件的名字:
1
[root@localhost c]# gcc -c hello.s -o hello.o
由於hello.o是二進制文件,使用less查看顯示為亂碼;
然後使用vim hello.o打開也顯示為亂碼,按下":%!xxd"查看其16進制形式,按下":%!xxd -r"退出 16進制查看模式,回到亂碼狀態。在退出vim時,若提示已經修改了文件,則使用":q!"強制退出。
(4)鏈接階段:鏈接器將可重定向的目標文件hello.o以及庫文件(如printf.o)執行並入操作,形成最終可執行的可執行目標文件。
1
[root@localhost c]# ls
2
hello.c hello.i hello.o hello.s hello_s.s
3
[root@localhost c]# gcc hello.o
4
[root@localhost c]# ls
5
a.out hello.c hello.i hello.o hello.s hello_s.s
可使用-o選項,指定輸出文件(即可執行目標文件)的名字:
1
[root@localhost c]# gcc hello.o -o hello
2
[root@localhost c]# ls
3
a.out hello hello.c hello.i hello.o hello.s hello_s.s
(5)執行階段:
1
[root@localhost c]# ./a.out
2
Hello, World!
3
[root@localhost c]# ./hello
4
Hello, World!
由此,看出前面使用的gcc hello.c -o
hello命令,將hello.c直接編譯為可執行的目標文件,中間經過於處理器的預處理階段(源文件到預處理文件),編譯器的編譯階段(預處理文件到匯
編文件),匯編器的匯編階段(匯編文件到可重定向的目標文件),鏈接器的鏈接階段(可重定向的目標文件到可執行的目標文件)。
還有其他的選項如下:
-Idir:dir是頭文件所在的目錄
-Ldir:dir是庫文件所在的目錄
-Wall:列印所有的警告信息
-Wl,options:options是傳遞給鏈接器的選項
編譯優化選項:-O和-O2
-O選項告訴GCC 對源代碼進行基本優化。這些優化在大多數情況下都會使程序執行的更快。-O2選項告訴GCC產生盡可能小和盡可能快的代碼。
-O2選項將使編譯的速度比使用-O時慢。但通常產生的代碼執行速度會更快。
除了-O和-O2優化選項外,還有一些低級選項用於產生更快的代碼。這些選項非常的特殊,而且最好只有當你完全理解這些選項將會對編譯後的代碼產生什麼樣的效果時再去使用。這些選項的詳細描述,請參考GCC的聯機幫助,在命令行上鍵入"man gcc"即可。
調試選項:-g(使用詳情見第3部分)
-g選項告訴GCC產生能被GNU調試器使用的調試信息以便調試你的程序。
即:在生成的目標文件中添加調試信息,所謂調試信息就是源代碼和指令之間的對應關系,在gdb調試和objmp反匯編時要用到這些信息。
3.調試
雖然GCC提供了調試選項,但是本身不能用於調試。Linux 提供了一個名為gdb的GNU調試程序。gdb是一個用來調試C和C++程序的調試器。它使你能在程序運行時觀察程序的內部結構和內存的使用情況。以下是gdb所提供的一些功能:
a.它使你能監視你程序中變數的值;
b.它使你能設置斷點以使程序在指定的代碼行上停止執行;
c.它使你能一行行的執行你的代碼。
(1)啟動gdb
在命令行上鍵入"gdb"並按回車鍵就可以運行gdb了,如下:
1
[root@localhost c]# gdb
2
GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
3
Copyright (C) 2010 Free Software Foundation, Inc.
4
License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it.
5
There is NO WARRANTY, to the extent permitted by law. Type "show ing"
6
and "show warranty" for details.
7
This GDB was configured as "x86_64-redhat-linux-gnu".
8
For bug reporting instructions, please see:<>.
9
(gdb)
當啟動gdb之後,即可在命令行上輸入命令進行相關的調試操作。
也可以以下面的方式來啟動gdb:
1
[root@localhost c]# gdb hello
這種方式啟動gdb,直接將指定調試的程序文件裝載到調試環境中。也就是讓gdb裝入名稱為filename的可執行文件,從而准備調試。
為
了能夠進行調試,當前調試的程序文件中必須包含調試信息。其中調試信息包含程序中的每個變數的類型和其在可執行文件里的地址映射以及源代碼的行號,gdb
利用這些信息使源代碼和機器碼相關聯。因此在使用gcc編譯源程序的時候必須使用-g選項,以便將調試信息包含在可執行文件中。
例如:
1
[root@localhost c]# gcc -g hello.c -o hello
gdb還提供了其他的啟動選項,請參考gdb的聯機幫助。在命令行上鍵入"man gdb"並回車即可。
(2)gdb基本命令
<1>單步執行和跟蹤函數調用
程序編輯如下:
01
#include <stdio.h>
02
int add_range(int low, int high){
03
int i;
04
int sum;
05
for(i = low; i <= high; i++){
06
sum = sum + i;
07
}
08
return sum;
09
}
10
11
int main(){
12
int result[100];
13
result[0] = add_range(1, 10);
14
result[1] = add_range(1, 100);
15
printf("result[0] = %d\nresult[1] = %d\n", result[0], result[1]);
16
return 0;
17
18
}
編譯和運行如下:
1
[root@localhost gdb_demo]# vim test1.c
2
[root@localhost gdb_demo]# gcc test1.c -o test1
3
[root@localhost gdb_demo]# ls
4
test1 test1.c
5
[root@localhost gdb_demo]# ./test1
6
result[0] = 55
7
result[1] = 5105
『肆』 為什麼沒有國產的C/C++的編譯器
首先:國產有編譯器,比如龍芯就用
其次:開發編譯器難度非常大,編譯器、操作系統、資料庫這三樣是程序界的三座大山,不是 所有牛奶都叫愚公。國產即使有編譯器我認為也不是完全從零開發的。龍芯雖然有了自己的編譯器也只是針對自己的平台編譯,不具備通用性。一句話,中國目前缺少大企業的眼光和決心以及實力
『伍』 突破封鎖!國產晶元終於有了自己的指令集
在半導體晶元領域, 指令系統是一切軟硬體生態的起點 。
以大家最熟悉的ARM和X86為例,它們就分別隸屬於RISC精簡指令集和CISC復雜指令集。
隨著物聯網、5G、AI新興領域的興起,RISC-V和MIPS兩大精簡指令集架構也頻繁出現在我們的視野內。
所謂晶元,其實都是由半導體堆出來的硬體電路,晶體管越多往往代表性能和功能越強。但無論是超級計算機還是智能手環, 它們搭載的處理器都只能識別二進制數據 。
想讓這些晶元正常運行,處理復雜的應用場景,首先就要教會它們學會類似九九乘法表的「演算法口訣」和「數學公式」, 而這些演算法口御橋早訣/公式其實就是所謂的「指令集」 。
換句話說, 指令集的功能和效率(演算法口訣/公式的類型),在很大程度上就決定了各類晶元的成就和算力的上限 。
雖然海思麒麟、龍芯、兆芯、海光、紫光、澎湃等國產晶元都在各自領域取得了不俗的成績,但無論是它們,還是其他採用X86、ARM、MIPS、RISC-V、Alpha和Power,選擇封閉、授權還是開源的國產晶元項目,其底層的指令集根基都掌握在別人手裡。
因此, 只有從指令系統的根源上實現自主,才能打破軟體生態發展受制於人的枷鎖 。
好消息是,日前龍芯中科就正式發布了自主指令系統架構「Loongson Architecture」,簡稱為「龍芯架構」或者「LoongArch」。它包括基礎架構部分,以及向量擴展LSX、高級向量擴展LASX、虛擬化LVZ、二進制翻譯LBT等擴展部分,總共接近2000條指令。同時不包含龍芯此前使用的MIPS指令系統, 並具有完全自主、技術先進、兼容生態三個方面的特點 。
目前,採用LoongArch的龍芯3A5000處理器晶元已經流片成功,完整操作系統也已穩定運行,它能對多種國際主流指令系統的高效二進制翻譯鏈,並成功演示了運行基於其它主流指令系統的復雜應用程序。
LoongArch對MIPS指令的翻譯效率是100%性能,對ARM指令翻譯的效率是90%性能,對x86的翻譯效率是80%性能。
此外,龍芯中科還在聯合產業鏈夥伴在適當的時間建立開放指令系統聯盟,在聯盟成員內免費共享LoongArch及有關龍芯IP核。
所謂IP核,我們可以理解為ARM旗下的Cortex-A78和Cortex-A55等,後置都是基於ARMv8指令集打造的核心IP架構,並授權給了高通、三星、聯發科等晶元商開發SoC移動平台。
目前,ARM剛剛發布了ARMv9指令集,如果不出意外將在下半年發布的Cortex-A79和Cortex-X2架構就將採用這套指令集。
近10年來32位手機處理器都是基於ARMv7指令集打造,在A75之前的處理器則是基於ARMv8-A設計,隨後都是ARMv8.2-A一統江湖
ARM指令集可以細分為Cortex-A(ARMv-A)、Cortex-R(ARMv-R)和Cortex-M(ARMv-M),分別適用於不同類型的晶元
比如車載晶元使用的就是Cortex-R(ARMv-R)核心IP
總之, 設計出一個純國產的自主指令集只是萬里長征的第一步 ,關鍵是後續要做出懂這個指令集的CPU(已經有了龍芯3A5000),再往後還需要鎮雀讓和人類交互的「翻譯家」——編譯器懂這個指令集。也就是需要不斷完善軟硬體生態,讓我們熟悉的系統、辦公、 娛樂 和 游戲 程序都能運行在這套指令集打造的晶元之上。如果做不到這一步,國產指令集和相關晶元也只是空中樓閣而已、
作為國人,我們真心希望LoongArch這種國產指令集可以取得成功,今後無論手機、電腦、車載還是其消沖他半導體晶元都能以使用國產指令集為榮,並走向世界。
擴展小知識
那麼,指令集又是如何影響晶元執行效率的?
我們以RISC和CISC,讓它們分別執行「清潔地面」的命令為例,看看其背後的指令邏輯差異。
邏輯上,「清潔地面」的大概思路是先拿起掃帚,掃地;拿起簸箕,用掃帚把垃圾掃進簸箕;放下掃帚和簸箕,潤濕墩布;再用墩布擦地,直至清潔地面完成。
對CISC復雜指令集而言,很容易理解「清潔地面」這套邏輯,下達「清潔地面」命令後,就能按照規則和順序,一步步自動完成。
對於RISC精簡指令集而言,它一下子可理解不了如此復雜的邏輯,必須將復雜的邏輯順序拆分,然後按照一項項簡單的命令去完成復雜的操作。
比如,想讓RISC精簡指令集完成「清潔地面」命令,就必須依次下達「拿起掃帚」、「掃地」、「拿起簸箕」、「把垃圾掃進簸箕」、「放下掃帚和簸箕」、「潤濕墩布」、「墩地」……
看起來CISC復雜指令集方便又強大?沒錯,如果要同時清潔無數房間地面,你只要對著不同的房屋說「清潔地面」、「清潔地面」、「清潔地面」……即可。
而對RISC精簡指令集,你需要對著每個房間都重復一整套復雜的命令,如果下達指令的人嘴巴不夠快(帶寬不夠大),那清潔地面的效率自然受到影響,難以和CISC復雜指令集抗衡。
但是, 現實生活中,並非所有房間的地面都需要一整套的清潔流程,比如你只需要墩地一個步驟。
對RISC精簡指令集而言,你只需對著需要清潔的房間說「墩地」、「墩地」、「墩地」即可。而由於CISC復雜指令集沒有單獨的「墩地」動作,操作起來就要麻煩許多,完成相同的墩地操作會消耗更多資源,翻譯過來就是發熱更高更費電。
這就是RISC和CISC的本質區別。 說不上誰好誰壞,只能說它們所擅長的領域各不相同。
以ARM架構為代表的RISC精簡指令集,最適合針對常用的命令進行優化,賦予它更簡潔和高效的執行環境,對不常用的功能則通過各種精簡指令組合起來完成。
RISC是將復雜度交給了編譯器,犧牲了程序大小和指令帶寬,從而換取了簡單和低功耗的硬體實現。
對以X86架構為代表的CISC復雜指令集,則適合更加復雜的應用環境。
CISC是以增加處理器本身復雜度作為代價,以犧牲功耗為代價去換取更高的性能。不過,X86架構則可通過對新型指令集的支持(如SSE4.1、AVX-512等),在一定程度上提高指定任務的執行效率和降低功耗。
現在晶元領域是RISC攻,CISC守的格局。以蘋果M1為代表的ARM架構RISC指令集晶元正在染指傳統的X86 PC市場,而且大概率會取得成功。雖然以英特爾為代表的X86陣營曾多次試圖反擊Android生態(如早期的Atom晶元),但最終卻都以失敗告終。ARM最新發布的ARMv9指令集,就給了ARM晶元入侵X86 PC大本營更多彈葯,也許用不了多久Windows ARM版PC也將成為一個更加重要的PC品類。
『陸』 龍芯與Linux問題
可以,但更建議你用ubuntu linux ,要容易上手些,使用也方便,不會打擊新手自信。而且ubuntu 也有龍芯版的,可以裝在龍芯上。它們本質是一樣的。
原則上只要有相應的編譯器,開源軟體都可以運行在龍芯上。
雖然CPU不同,但是世界上所有的程序,絕大部分是C/C++語言寫的,它是跨平台的語言,只要有相應的編譯器(GCC)就能編譯後運行在完全不同的CPU上。而linux 程序基本都是開源的,龍芯出現後肯定有很多人去移植和開發編譯器。所以,你的程序只要是C/C++寫的就能運行,當然,要用龍芯專用的編譯器編譯一次。
當然,Linux 腳本類程序不需編譯也可直接運行。