有粉絲問我到底什么是 ARM,搞不清楚 Cortex、arm 內核、arm 架構、ARM 指令集、soc 這些概念都是什么關系,下面一口君給大家整理一下關于 ARM 相關的一些概念。
1、ARM 既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。2、ARM 公司是專門從事基于 RISC 技術芯片設計開發(fā)的公司,作為知識產權供應商,本身不直接從事芯片生產,而是轉讓設計許可,由合作公司生產各具特色的芯片。3、ARM 處理器的內核是統一的,由 ARM 公司提供,而片內部件則是多樣的,由各大半導體公司設計,這使得 ARM 設計嵌入式系統的時候,可以基于同樣的核心,使用不同的片內外設,從而具有很大的優(yōu)勢。
下面我們針對這些概念,給大家逐一介紹。
ARM 公司
ARM 首先是一個公司,即 Advanced RISC Machines 的縮寫。但是他本來并不叫這個名字,來看看 ARM 公司的成長歷史。
1978 年,一個名叫 Hermann Hauser 的奧地利籍物理學博士,還有他的朋友,一個名叫 Chris Curry 的英國工程師成立了一家名字叫“CPU”的公司。這家 CPU 公司的全稱,是 Cambridge Processor Unit,字面意思是“劍橋處理器單元”。
CPU 公司成立之后,主要從事電子設備設計和制造的業(yè)務。他們接到的第一份訂單,是制造賭博機的微控制器系統。
這個微控制器系統被開發(fā)出來后,稱之為 Acorn System 1。
之所以叫 Acorn,就是因為他們想在電話黃頁里排在 Apple(蘋果)公司的前面。
在 Acorn System 1 之后,他們又陸續(xù)開發(fā)了 System 2、3、4,還有面向消費者的盒式計算機——Acorn Atom。
到了 1981 年,公司迎來了一個難得的機遇——英國廣播公司 BBC 打算在整個英國播放一套提高電腦普及水平的節(jié)目,他們希望 Acorn 能生產一款與之配套的電腦。
但是他們就發(fā)現,自己產品的硬件設計并不能滿足需求。當時,中央處理器的發(fā)展潮流,正在從 8 位變成 16 位。Acorn 并沒有合適的芯片可以用。
于是,他們打算去找當時如日中天的英特爾(Intel),希望對方提供一些 80286 處理器的設計資料和樣品。然而,英特爾無情地拒絕了他們。
備受打擊的 Acorn 公司,一氣之下決定自己干,自己造芯片。(多么熟悉的橋段?。?/p>
于是 Acorn 公司的研發(fā)人員從美國加州大學伯克利分校找到了一個關于新型處理器的研究——簡化指令集,恰好可以滿足他們的設計要求。
在此基礎上,經過多年的艱苦奮斗,來自劍橋大學的計算機科學家 Sophie Wilson 和 Steve Furber 最終完成了微處理器的設計。前者負責指令集開發(fā),后者負責芯片設計。
對于這塊芯片,Acorn 給它命名為Acorn RISC Machine。
這就是**“ARM”**三個字母的由來。
在 ARM1 之后,Acorn 陸續(xù)推出了好幾個系列,例如 ARM2,ARM3。
1990 年,Acorn 為了和蘋果合作,專門成立了一家公司,名叫 ARM。
注意,這里的 ARM 是公司名稱,不是芯片名稱。這個 ARM 的完全拼寫也不一樣,是 Advanced RISC Machines。
前面的芯片名稱:Acorn RISC Machine 現在的公司名稱:Advanced RISC Machines
20 世紀 90 年代,ARM 32 位 RISC(Reduced lnstruction Set Computer)處理器擴展到國際范圍,占有了低功耗、低成本和高功能的嵌入式體系運用領域的領先地位。
ARM 公司既不出產芯片也不出售芯片,它只出售芯片技能授權。
正式這個政策的制定,讓 ARM 公司擺脫了現金流的困擾,可以全身心都入到芯片研發(fā)上。
1998 年 4 月 17 日,業(yè)務飛速發(fā)展的 ARM 控股公司,同時在倫敦證交所和納斯達克上市。
2007 年,劃時代產品 -iPhone 問世。而第一代 iPhone,正是使用了 ARM 設計、三星制造的芯片。
2008 年,谷歌推出了 Android(安卓)系統,也是基于 ARM 指令集。至此,智能手機進入了飛速發(fā)展階段,ARM 也因此奠定了在智能手機市場的霸主地位。
2016 年 7 月 18 日消息,日本軟銀以 234 億英鎊(約合 310 億美元)的價格收購英國芯片設計公司 ARM。
2020 年 9 月 14 日,英偉達正式宣布將以 400 億美元的價格從軟銀手中收購 ARM 公司。根據協議,英偉達將向軟銀公司支付價值 215 億美元的英偉達股票,以及 120 億美元現金。
目前這樁收購案遭到了包括英特爾、高通、特斯拉等多家硅谷科技巨頭的反對,他們認為這筆交易對行業(yè)不利,此外中國和歐盟的監(jiān)管機構也可能會反對該收購案。
靜觀其變吧!
ARM 內核與架構
任何一款 ARM 芯片都由兩大部分組成:ARM 內核,外設。
ARM 內核
ARM 內核:包括了寄存器組、指令集、總線、存儲器映射規(guī)則、中斷邏輯和調試組件等。內核是由 ARM 公司設計并以銷售方式授權給個芯片廠商使用的(ARM 公司本身不做芯片)。比如為高速度設計的 Cortex A8、A9 都是 ARMv7a 架構;Cortex M3、M4 是 ARMv7m 架構;前者是處理器(就是內核),后者是指令集的架構(也簡稱架構)。
外設部分包括計時器、A/D 轉換器、存儲器、i2c、UART、SPI、ROM... 等等,則完全由各芯片廠商自己設計并與 ARM 內核銜接配套。不同的芯片廠商就有不同的外設,因此構成了數量和規(guī)格龐大的 ARM 芯片產業(yè)。
ARM 指令集架構
指令集的設計是處理器結構中最重要的一個部分,用 ARM 的術語稱之為 ISA(Instruction Set Architecture)。
指令集可以說是 cpu 設計的靈魂,是打開 CPU 這個潘多拉魔盒的咒語,要想使用 cpu,我們只能通過這些指令來操作 cpu。
對于 32 位的 cpu,這些指令就是一個個 32 位的 01 的序列,不同的值就代表了不同的機器指令,cpu 的硬件能完美的解析并執(zhí)行這些指令,比如尋址、運算、異常處理等等。
當我們用手機玩著王者榮耀的時候,要知道我們的每發(fā)的一招,其實最終都是被翻譯成了一系列機器指令。
從 1985 年 ARMv1 架構誕生起,到 2011 年,ARM 架構已經發(fā)展到了第八代 ARMv8。
Cortex-A32/35/53/57/72/73/77/78 采用的都是 ARMv8 架構,這是 ARM 公司的首款支持 64 位指令集的處理器架構。
ARM11 之前的處理器和指令集架構
ARM11 芯片之前,每一個芯片對應的架構關系如下:
ARM11 之后處理器和指令集架構
ARM11 芯片之后,也就是從 ARMv7 架構開始,ARM 的命名方式有所改變。
新的處理器家族,改以 Cortex 命名,并分為三個系列,分別是 Cortex-A,Cortex-R,Cortex-M。
很巧合,又是這三個字母A、R、M。
在這里插入圖片描述
Cortex-A 系列(A:Application)
針對日益增長的消費娛樂和無線產品設計,用于具有高計算要求、運行豐富操作系統及提供交互媒體和圖形體驗的應用領域,如智能手機、平板電腦、汽車娛樂系統、數字電視,智能本、電子閱讀器、家用網絡、家用網關和其他各種產品。。
Cortex-R 系列 (R:Real-time)
針對需要運行實時操作的系統應用,面向如汽車制動系統、動力傳動解決方案、大容量存儲控制器等深層嵌入式實時應用。
Cortex-M 系列(M:Microcontroller)
該系列面向微控制器領域,主要針對成本和功耗敏感的應用,如智能測量、人機接口設備、汽車和工業(yè)控制系統、家用電器、消費性產品和醫(yī)療器械等。
Cortex-SC 系列(SC:SecurCore)
其實,除了上述三大系列之外,還有一個主打安全的 Cortex-SC 系列(SC:SecurCore),主要用于政府安全芯片。
ARM 的產品天梯
ARM11 系列包括了 ARM11MPCore 處理器、ARM1176 處理器、ARM1156 處理器、ARM1136 處理器,它們是基于 ARMv6 架構。
ARM Cortex-A5 處理器、Cortex-A7 處理器、Cortex-A8 處理器、Cortex-A9 處理器、Cortex-A15 處理器隸屬于 Cortex-A 系列,基于 ARMv7-A 架構。
Cortex-A53、Cortex-A57 兩款處理器屬于 Cortex-A50 系列,首次采用 64 位 ARMv8 架構。
2020 年 ARM 最近發(fā)布了一款全新的 CPU 架構 Cortex-A78,是基于 ARMv8.2 指令集。
什么是 SOC?
SoC 的全稱叫做:System-on-a-Chip,中文的的意思就是“把系統都做在一個芯片上”。
SoC 上集成了很多手機上最關鍵的部件,比如 CPU、GPU、內存、也就說雖然它在主板上的存在是一個芯片,但是它里邊可是由很多部件封裝組成的。
比如通常我們所說的高通 801,麒麟 950. 三星的 exynos 4412,A6 等等都只是系統部件打包封裝(SoC)后的總稱。然而各家的打包封裝的內容則不盡相同,原因也不盡相同。
經典的 ARM 系統級芯片或所謂的 Soc 包含許多組件,其中只有一些直接源自 ARM。首先,核心本身通常深度嵌入在設備內部,在設備范疇內通常不直接可見,而調試端口通常是唯一和核心本身相連的外露部分,有一些粘合邏輯,如時鐘和復位集成電路。
由于 ARM 核心只有兩個中斷輸入,最常見的外設就是某種中斷控制器,在外設內部,各組件通過芯片上互聯總線架構相互連接,對于極大多數基于 ARM 的設備而言,這就是標準的 AMBA 互聯。
AMBA 指定了兩個總線,稱為 AXI 的高性能系統總線,和稱為 APB 的低功耗外設總線,APB 通常用于連接所有外設,AXI 則用于存儲器和其他發(fā)高速設備,大多數設備都有一定數量的芯片上存儲以及連接外設存儲器設備的接口,但是注意,與設備的外部連接并不是 AMBA 總線,這僅在設備內部使用,并不外露。
舉例:Exynos 4412 SCP
下面我們以 三星的 Exynos(獵戶座) 4412 SCP 為例,來講解這幾個概念。
-
三星的 Exynos 4412 SCP 是一款基于 Cortex-A9 的 SOC; -
如下圖所示,Exynos 4412 包含了 4 個 Cortex-A9 的處理器(核); -
Cortex-A9 是基于 ARMv7-A 架構(指令集)的。
由上圖可知,exynos 4412 出了包含 4 個 Cortex-A9 核,還包括大量的外設控制器:DRAM Controller、SROM Controller、Camera IF、JPEG、GPS/GLONASS、Power Management、USB Host、I2C、UART、SPI 等。
和三星相同的其他和 arm 合作的各大廠商通常會把它的 CPU 和各類外圍 IP 都放到一起,然后自己拿著圖紙去流片,生產出來的也是一個正方形,下面有很多引腳,這個東西不僅包含了 CPU,還包含了其他的控制器,這個東西就叫做 SOC(system on chip)。
如下圖所示,就是三星最終生產的 Exynos ?4412 ?,當然了,光有這個 soc 還無法運行安卓,還需要借助外圍大量的外設才能最終形成一個完整的系統,但是大部分最復雜的硬件部分模塊都已經集成到了這個 soc 中。
目前各大廠商所做的事情,就是買來 ARM 的授權,得到 ARM 處理器的源代碼,而后自己搞一些外圍 IP(或者買或者自己設計),組成一個 SOC 后,去流片。不同的 SOC,架構不同(就是 CPU 如何和 IP 聯系起來,有的以總線為核心,有的以 DDR 為核心)。
海思是擁有自主產權的 SOC 架構??墒?,無論任何廠商,再怎么折騰,都沒有怎么動過 CPU,ARM 核心就好好的呆在那里,那就是中央處理器。
ARM 授權
如何來理解 ARM 授權呢?
就比如我們制造汽車,ARM 公司相當于擁有最先進的的'發(fā)動機'設計方案,但是他不'生產發(fā)動機',而是把設計方案授權給各大'汽車廠商'生產,賺來的錢繼續(xù)研發(fā)更先進的‘發(fā)動機’。
ARM 授權分為 ARM 架構授權、IP 核授權、使用層級授權
一個公司若想使用 ARM 的內核來做自己的處理器,比如 ST、蘋果、三星、TI、高通、華為等等,必須向 ARM 公司購買其架構下的不同層級授權,根據使用需要購買相應的層級授權。
架構的授權方式有三種:架構層級授權、內核層級授權(ip 核授權)、使用層級授權。
1. 架構層級授權,是指可以對 ARM 架構進行大幅度改造,甚至可以對 ARM 指令集進行擴展或縮減,蘋果就是一個很好的例子,在使用 ARMv7-A 架構基礎上,擴展出了自己的蘋果 swift 架構;
2. 內核層級授權,是指可以以一個內核為基礎然后在加上自己的外設,比如 USART、GPIO、SPI、ADC 等等,最后形成了自己的 MCU,這種公司很多,比如三星、TI;
3. 使用層級授權,要想使用一款處理器,得到使用層級的授權是最基本的,這就意味著你只能拿別人提供的定義好的 ip 來嵌入在你的設計中,不能更改人家的 ip,也不能借助人家的 ip 創(chuàng)造自己的基于該 ip 的封裝產品。
因此,如果華為分別拿到架構授權和 ip 核授權,那么意味著它可以在 ARM 指令集基礎上根據需要創(chuàng)建出自己的內核架構,并可添加各種片內外設比如通信接口、顯示器控制接口、GPIO 等等,從而生產出自己的“處理器芯片”。
其實就像我寫了一篇文章,我告訴甲,你可以拿去修改后使用,便是架構層級授權,我告訴乙,你可以在你的文章中引用我的文章,便是內核級授權,我告訴丙,你只能對我的文章進行轉發(fā),不能更改,不能添油加醋,便是使用層級授權。
總結
下面我們總結下這些概念:
-
ARM 公司的名字,叫 ARM:Advanced RISC Machines; -
ARM 前身 Acorn 公司設計的第一款微處理器,叫 ARM:Acorn RISC Machine; -
ARM 處理器名字:以前叫 ARM9、ARM11, 新的命名規(guī)則改以 Cortex 命名,分別是 Cortex-A,Cortex-R,Cortex-M;這三個字母A、R、M合到一起又是 ARM。 -
ARM 指令集,就是 ARM 架構,比如 ARMv8,每個處理器都需要依賴一定的 ARM 架構來設計; -
SOC:各大廠商買來 ARM 的授權,得到 ARM 處理器的源代碼,而后自己搞一些外圍設備的 IP(或者買或者自己設計),組成一個 SOC,比如三星的 Exynos 4412,華為的麒麟 990。