以前的文章說過,芯片的分類方法很多,種類猶如夜空的繁星,多到無法枚舉。本文把芯片的范圍縮小,聚焦高端通用芯片CPU這一分支,我們會發現CPU芯片的種類也不少,而且“門派”林立,儼然像一個CPU芯片“江湖”,指令集和微架構就是這個江湖中的門派標志。什么是CPU指令集和微架構?為什么指令集和微架構是江湖門派標志?本文試圖用通俗的語言加以說明。
CPU是中央處理器(Central Processing Unit)的英文簡稱,是一種高端通用芯。它在計算機(電腦)和智能設備中用來指揮各個部件協同高效地工作。它是電腦和智能設備的控制中樞,是電腦中的大腦。
電腦的部件需要CPU來指揮,而CPU內的部件也需要受到指揮協調才能工作,這個指揮官就是程序,由程序發出的指揮CPU內部電路協同工作的命令,簡稱為指令。例如,如果要讓CPU完成一次A+B-》C的計算,就要發2條存取指令,從存儲器把A和B取出來送到運算器中;再發1條加法指令,讓運算器執行加法運算;最后發1條存取指令,把C存入存儲器。這個例子中用到了兩種指令:存取指令和加法指令。
實際上,一個通用CPU要完成各類計算、推理、判斷和控制工作,它的指令種類少則幾十種,多則數百種,CPU的各種指令的集合稱為CPU的指令集。指令集確定了CPU的工作方式和與之相適應CPU內部的硬件架構,這種硬件架構稱為CPU的微架構。指令集和微架構是一個公司研發出新款CPU后形成的核心知識產權。指令集是CPU的頂層設計規范,微架構是這個頂層規范的物理實現,這種實現可以有多種,實現方法可以有變化。一般說的CPU架構就包含了CPU指令集和微架構兩個東西。
圖1.新的指令集和微架構可以創立一個新的CPU芯片江湖門派
圖1描述了指令集、微架構、CPU芯片和芯片用戶群之間的關系??梢钥吹剑邪l一款新的指令集和微架構,就相當于在CPU芯片江湖中創立了一個門派。具體地講,A公司開發了一款新的CPU,意味著創建了新的指令集和微架構,不但A公司的CPU芯片形成了用戶群A,而且A公司還可以授權其他公司開發CPU芯片,并形成相應的用戶群B、C、D等。新的指令集和微架構可以開發一個CPU芯片家族,可以產生一個芯片用戶集群,就好像產生了一個江湖門派。指令集和微架構設計得好,CPU的性能就好,用戶就多,追捧者就多,門派就興旺發達。
圖2.指令集是連接軟件和硬件的紐帶
圖2表明,指令集是連接軟件和硬件的紐帶。如論是應用程序還是操作系統中的系統代碼,最終都被編譯成可以在CPU芯片內部執行的符合指令集規范的機器代碼程序。機器代碼程序中的指令控制著CPU內部部件協調高效工作,并實現CPU的整體功能,進而由CPU控制整機系統工作。指令集是系統軟件和硬件工程師共同遵從的法條,只有遵守了這個法條,軟件工程師編寫的軟件才能在不同型號的整機系統上運行。硬件工程師開發的整機系統才能運行現有的應用軟件。
講了這么多概念,也分析了這些概念的關系,如果還不好理解的話,讓我們來看看三個代表性的CPU指令集和微架構的例子吧。第一個是代表單片機或微控制器(MCU)的MCS-51指令集。第二個是代表復雜指令集計算機(CISC)的x86指令集。第三個是代表精簡指令集計算機(RISC)的ARM指令集。舉例這些指令集和微架構的目的不是為了研究,只是為了展示,目的是使讀者對CPU芯片江湖的門派標志——指令集和微架構有個宏觀印象。
為什么要把MCU指令集拿來和CPU指令集一同展示?讓我們先了解一下MCU、CPU和SoC三者的關系吧。MCU是微控制器(Micro ControllerUnit)的英文簡稱,是一種中低端的通用芯片,主要用于中小電子產品和系統的控制。SoC是系統級芯片(System on Chip)的英文簡稱,是一種包含低、中、高端處理功能的面向應用領域的專用芯片。MCU、CPU和SoC難以絕對劃界,但是,如果研究了三者的特點后,您就可以對它們進行清晰的區分了。
三者的共同特點:它們都是智能電子產品和系統的控制中樞,都有要遵循的指令集和微架構。三者的差別:MCU一般是4位、8位和16位微架構,工作頻率不會太高??刂菩匀蝿蛰^多,計算和信息處理性工作較少。與CPU相比,單芯片上集成了一些外部接口和功能部件。CPU一般是16位、32位和64位微架構,工作頻率很高,更重視處理速度和運算能力,單芯片上很少集成外部接口和功能部件。SoC更加重視單芯片的系統集成度,各種位寬微架構、工作頻率、集成度的SoC都可以有,單芯片上包含多種外部接口和功能部件。
MCU與CPU的區別是處理能力小與大,偏向控制與偏向計算的區別。SoC處理能力可小可大,如果在MCU或者CPU芯片上集成更多的外部接口和功能部件,這個MCU或者CPU芯片就變成了SoC芯片。
一、指令集與微架構的三個代表
基于上述原因,以及ARM CPU通常被嵌入到SoC芯片中,本文選擇了MCS-51作為MCU指令集的代表,x86既作為CISC指令集的代表也作為了CPU指令集的代表,ARM既作為RISC指令集的代表也作為了SoC指令集的代表,下文對它們做簡要介紹和展示。
1.MCS-51指令集和微架構
MCS-51指令集是Intel公司1980年前后開發的單片機指令集,該指令集包含數據傳送、位操作、邏輯運算及轉移、算術運算、控制轉移5個大類共計111條指令(圖3)。該指令集對應的單片機微架構如圖4所示。
通過對該微架構硬件的增、減、改變,Intel先后開發了兼容MCS-51指令集的系列單片機芯片,共計16個型號(圖3)。另外Intel也向許多公司開放MCS-51指令集和微架構,允許他們生產兼容MCS-51指令集的單片機。這些公司包括ATMEL、PHILIPS、NXP、OKI等,以及日本、臺灣和國內的一些公司。因此,MCS-51單片機在全球應用十分普及。MCS-51開辟了一個規模龐大、應用甚廣的單片機大家族。
圖3.MCS-51單片機指令集(來源:無憂文檔)
圖4. MCS-51單片機內部的微架構(來源:百度百科)
圖5. MCS-51單片機家族(來源:參考資料5)
2. x86指令集和微架構
1978年,Intel公司開發出了16位的CPU,并命名為i8086,同時還開發出與之相配合的數學協處理器i8087,這兩種芯片使用相互兼容的指令集,再加上i8087用于對數、指數和三角函數等數學計算的指令集,就形成了今天人們常說的x86指令集。隨后的40年間,Intel陸續研制出i80286、i80386、i80486、奔騰(Pentium)系列、酷睿(Core)系列等后續CPU型號。研制這些CPU芯片時,為了保持向前軟件兼容,Intel所有CPU繼續使用x86指令集,并根據CPU功能提升和性能增強的需要,增加了286、386、486、Pentium、Pentium Ⅱ等擴展類指令?!靶氯昱f三年,修修補補又三年”,可以說x86指令集是與時俱進,不斷生長和變復雜的典范,因而x86指令集成了名副其實的復雜指令集(CISC)。
x86指令集包括數據傳送、邏輯運算、移位運算、程序控制、算術運算、串操作、處理器控制、286擴展、386擴展、486擴展、Pentium擴展、Pentium Ⅱ擴展12個大類共計190多條指令(圖7)。圖8分別是Intel Core和AMD K8的CPU微架構。
Intel和AMD是全球最大的兩家x86指令集CPU芯片開發商。Intel多達上百個型號的CPU都屬于x86系列。另外,加上AMD多達80多個型號的兼容x86 CPU,x86指令集CPU芯片家族的陣容可謂是十分壯觀(圖10)。兩家公司的CPU芯片不斷迭代升級,相互競爭,型號品種繁多,形成了令世人矚目的CPU產品發展軌跡。
圖7. x86 CPU指令集(來源:參考資料1)
圖8. x86 CPU的兩種微架構舉例(來源:參考資料3)
3. ARM指令集和微架構
ARM公司成立于1990年,是全球領先的CPU IP(Intellectual Property)提供商,全世界超過95%的智能手機和平板電腦都采用ARM架構處理器。ARM公司自己不設計和銷售CPU芯片,只向其他公司銷售和授權使用ARM架構的系列CPU IP。ARM授權從高到低大體分為三種,包括架構授權、內核授權和使用授權,本文只關心前兩種。架構授權對設計團隊的要求很高,許可費用也很昂貴,只適合有實力的大公司,中小企業一般選擇購買內核授權。
架構授權(也稱為指令集授權)是指用戶購買了架構級的ARM處理器設計、制造的許可權后,可以從整個指令集和微架構入手,對ARM架構進行改造,甚至可以對ARM指令集進行裁減或擴展,實現更適合自用、更高性能、更低功耗、更低成本的目的。擁有ARM架構授權的公司包括高通、蘋果、三星、微軟、海思等。
內核授權(也可稱為方案授權)是指用戶可以將其所購買的ARM核心(IP核)應用到自己設計的芯片中,但用戶不得對ARM核心進行修改。擁有內核授權的公司多如牛毛,國際上包括德州儀器、博通、飛思卡爾、富士通以及Calxeda等,國內中小芯片設計公司也很多,不勝枚舉。
圖10展示了ARM指令集。ARM指令集包括跳轉指令、數據處理、乘加指令、PSR訪問、加載/存儲指令、數據交換、移位指令、協處理器8個大類共計50條指令(其中,ARM指令16條,Thumb指令18條,Thumb-2 16條)。加上15條控制偽指令合計65條指令。圖11展示了一款可內核授權的ARM核心微架構,它的型號命名為ARM Cortex A9。
全球1500多家企業獲得了ARM公司授權,可以研發和生產ARM架構的處理器芯片和包括含ARM內核的SoC芯片。圖12是全球采用ARM架構處理器技術的用戶、工具商、合作伙伴的Logo圖譜。ARM CPU門派在移動通信領域一家獨大,并正在向其它領域滲透,包括物聯網、臺式電腦、服務器等,讓x86 CPU門派老大Intel公司十分不安。
1. MCU類的指令集
MCU作為縮減版的CPU和SoC,它也有指令集和微架構,同樣是智能電子產品和系統的控制中心。因此,它可以作為CPU芯片江湖的一員,被寫入到這一部分來,讓讀者看看MCU指令集門派都有哪些種類。
這個門派下的指令集包括:Zilog公司的Z80指令集、Intel的MCS-51指令集、MicroChip的PIC指令集、ATMEL的AVR指令集、TI的MSP430指令集、Motorola的68K、ARM公司的ARM-Thumb等等。
2.CISC類的指令集
CISC類指令集也可稱為復雜指令集。CISC是復雜指令集計算機(Complex Instruction SetComputer)的英文縮寫。在CISC指令處理器中,程序的各條指令是按順序串行執行的,每條指令中的各個操作也是按順序串行執行的。順序執行的優點是控制簡單,但計算機各部分的利用率不高,執行速度較慢。
這個門派下的指令集包括:Intel的x86指令集(x86、x86-64、IA-32、IA-64等)、AMD的兼容x86指令集(x86、AMD64等)、威盛VIA的兼容x86指令集(x86、AIS等)。
3.RISC類的指令集
RISC類指令集也可稱為精簡指令集。RISC是精簡指令集計算機(Reduced Instruction SetComputing)的英文縮寫。它是在CISC指令系統基礎上發展起來的,CISC各種指令的使用頻度相當懸殊,最常使用的是一些比較簡單的指令,它們僅占指令總數的20%,但在程序中出現的頻度卻占80%。復雜指令系統必然增加微處理器的復雜性,并且指令解碼執行過程復雜并且費時,必然會降低計算機的速度。20世紀80年代誕生了RISC型CPU。相對于CISC型CPU,RISC型CPU不僅精簡了指令集,還采用了超標量和超流水線結構,大大增加了并行處理能力。RISC指令集是高性能CPU的發展方向。RISC的指令格式統一,種類比較少,尋址方式也比復雜指令集少。當然處理速度就提高了很多。
這個門派下的指令集包括:DEC公司的Alpha指令集、MIPS公司的MIPS指令集、Sun公司的SPARC指令集、IBM聯合Apple與Motorola開發的PowerPC指令集、IBM的POWER服務器CPU 指令集、ARM公司的ARM32和ARM64指令集、開源RISC-V指令集等。
4.EPIC類的指令集
EPIC類指令集也稱為精確并行指令集。EPIC是精確并行指令計算機(Explicitly ParallelInstruction Computers)的英文縮寫。EPIC是否是RISC和CISC體系的繼承者的爭論不少,單以EPIC體系來說,它更像Intel的處理器邁向RISC體系的重要步驟。EPIC體系設計的CPU,在相同的主機配置下,處理Windows的應用軟件比基于Unix下的應用軟件要好很多。
Intel采用EPIC技術的服務器CPU是安騰Itanium(開發代號Merced)。它是64位處理器,也是IA-64系列中的第一款。
圖13. 全球流行的CPU指令集的分類
三、實現CPU自主可控的夢想
發展自主可控的國產CPU,首先要解決指令集和微架構的自主可控問題,其次是軟件生態和生產的問題。圖14列出了目前主要的國產CPU指令集及技術來源,這是我們發展自主可控國產CPU的基礎,這些資源已得到業界的高度重視。希望政府能頂層規劃和統一協調,加大資金支持力度,在業界共同努力下實現國產CPU自主可控的夢想。
圖14.主要的國產CPU指令集及技術來源(來源:由參考資料9整理)
如何實現我國CPU芯片自主可控,公認途徑歸納起來有以下幾個方面,一是購買流行CPU架構授權,開發國產CPU產品;二是用好開源CPU指令集RISC-V,走國產CPU自強之路。三是用好已有可控CPU架構,加大投入和研發力度,補齊國產CPU短板。四是創立新的CPU架構,走自力更生的國產CPU發展之路。發展國產CPU,實現安全、自主和可控是最終目的,方法可以多樣化,不一定什么都要靠自己從零做起,即未必一定要創立新CPU門派。
1.購買流行CPU架構授權,開發國產CPU產品。
目前,國內大部分國產MCU、CPU和SoC芯片研發都是走這個途徑。之前這條路子走的很順利,國內芯片設計銷售額多年實現兩位數增長,2020年有望超過3800億元。大部分公司都以購買授權方式,在自研CPU芯片中采用國外流行的CPU架構,包括華為海思自研的多款SoC芯片,都是基于ARM架構的CPU。中美科技戰以來,大家發現這是一種自主但不可控的CPU發展之路。
2.用好開源CPU指令集RISC-V,走國產CPU自強之路。
美國對我國芯片產業的打壓和圍堵,讓業界把發展自主可控國產CPU的希望寄托在了開源指令集RISC-V上來,這可能是目前希望最大的一條途徑。原因是RISC-V架構已比較成熟,性能也比較優異,已經過許多商業化應用驗證。并且國內已具有一定的人才和技術積累。人們認為RISC-V最有希望改變當前由ARM和x86主導CPU芯片江湖的局面,它將對ARM在消費類、IoT等嵌入式CPU市場的優勢地位造成巨大沖擊。RISC-V是國產自主可控CPU的曙光。RISC-V目前的唯一短板還是軟件生態不夠完善,需要業界同仁奮發努力。
3.用好已有可控CPU架構,加大投入和研發力度,補齊國產CPU短板。
國內有些公司多年前陸續繼承了一些國外老舊CPU架構的產權,有些公司也獲得了國外較成熟CPU架構永久授權,也有些公司自創了CPU和GPU架構。例如阿里平頭哥(收購中天微)、蘇州國芯、中晟宏芯、深圳中微電等。華為海思也獲得了ARM v8架構的永久授權,這些都是開發自主可控國產CPU的良好基礎。建議政府和企業加大投入和研發力度,在這些CPU架構基礎上創新發展,不斷完善軟件生態,抓住補短板和國產替代的良機,實現國產CPU產品的迭代升級和技術進步。
4.創立新的CPU架構,走自力更生的國產CPU發展之路。
這就相當于要設計一款新的CPU,建立新的CPU指令集和微架構。這是一條最困難的途徑。最困難體現兩方面,一是設計的新款CPU能否具備性能和功能的先進性、高效性和經濟性;二是如何能快速搭建好新款CPU的軟件生態,包括匯編和高級語言編程工具、系統開發驗證工具等。軟件生態建設需要時間,需要市場,也需要研發團隊和用戶的通力協作。而且,創立一個CPU行業門派后,要讓這個門派發揚光大并不是一件容易的事情。因此,許多人對這條途徑不太看好。
結語:1.指令集是軟件和硬件的紐帶,電子產品中的軟件不論是高級語言還是匯編,最后都是轉換為一條條的指令,指揮硬件各部件協調工作,硬件是為完成指令的任務而生的。2.指令集是軟件和硬件工程師共同遵從的法條,只有遵守了這個法條,開發的軟件才能在不同型號的硬件上兼容運行。3.指令集是CPU芯片江湖門派的標志,公司名和產品名不過是它的代名詞罷了。只有指令集相同,產品才能兼容互換。只有大家都認可這個指令集,都愿意投入到這個門派之下,不斷完善軟件生態,才能使用戶越來越多,門派越來越興旺。4.發展自主可控的國產CPU,最困難的是搭建CPU的軟件生態。如果把CPU指令集看作門派標志的話,搭建軟件生態就是營造門派氛圍,擴大門派影響力。
原文標題:【芯論語】科普:指令集——CPU芯片江湖中的門派標志
文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
芯片
+關注
關注
455文章
50816瀏覽量
423627 -
cpu
+關注
關注
68文章
10863瀏覽量
211767
原文標題:【芯論語】科普:指令集——CPU芯片江湖中的門派標志
文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論