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