前言有粉丝问我什么是ARM,不知道Cortex、armcore、armarchitecture、ARMinstructionset、soc这些概念之间的关系。ARM相关的一些概念。1.ARM既可以认为是一个公司的名称,也可以认为是一种微处理器的总称,或者是一种技术的名称。2、ARM是一家专门从事基于RISC技术的芯片设计和开发的公司。作为知识产权供应商,其自身并不直接从事芯片生产,而是转让设计许可,合作企业生产具有不同特性的芯片。3、ARM处理器的核心统一由ARM提供,片上元器件多样,由各大半导体公司设计。这使得ARM在设计嵌入式系统时基于相同的内核,使用不同的On-chipperipherals,具有很大的优势。下面,我们将对这些概念一一进行介绍。ARM公司ARM是第一个公司,AdvancedRISCMachines的缩写。不过他本来就不叫这个名字的,我们来看看ARM的成长史吧。1978年,一位名叫赫尔曼豪瑟的奥地利物理学博士和他的朋友,一位名叫克里斯库里的英国工程师,成立了一家名为“CPU”的公司。这家CPU公司的全称是CambridgeProcessorUnit,字面意思是“剑桥处理器”。CPU公司成立后,主要从事电子设备的设计制造业务。他们的第一个订单是用于游戏机的微控制器系统。这个单片机系统开发出来之后,就叫做AcornSystem1,之所以叫Acorn,是因为他们想在电话黄页上排在Apple(苹果)前面。在AcornSystem1之后,他们又相继开发了System2、3、4,以及面向消费者的盒式电脑——AcornAtom。1981年,公司迎来了一个难得的机会——英国广播公司BBC计划在全英国播出一个提高计算机普及率的节目,他们希望Acorn能生产出与之匹配的计算机。但他们发现自己产品的硬件设计无法满足需求。当时中央处理器的发展趋势是从8位向16位转变。Acorn没有合适的芯片可以使用。于是,他们打算去找当时如日中天的英特尔(Intel),希望对方能提供一些80286处理器的设计资料和样品。然而,英特尔无情地拒绝了他们。受到重创的Acorn公司一气之下决定自己动手,自己做芯片。(多么熟悉的桥梁啊!)于是Acorn的研发人员找到了加州大学伯克利分校的一种新型处理器的研究——简化的指令集,刚好满足他们的设计要求。在此基础上,经过多年努力,剑桥大学的计算机科学家SophieWilson和SteveFurber终于完成了微处理器的设计。前者负责指令集开发,后者负责芯片设计。对于这款芯片,Acorn将其命名为AcornRISCMachine。这就是“ARM”三个字母的由来。继ARM1之后,Acorn推出了ARM2、ARM3等多个系列。1990年,Acorn为了与Apple合作成立了一家名为ARM的公司。注意这里的ARM是公司名称,不是芯片名称。这个ARM的完整拼法也不同,是AdvancedRISCMachines。原芯片名称:AcornRISCMachine现公司名称:AdvancedRISCMachines20世纪90年代,ARM32位RISC(精简指令集计算机)处理器扩展至国际范围,占据低功耗、低成本、高功能的嵌入式。在系统应用领域处于领先地位。ARM既不生产也不销售芯片,它只销售芯片技术授权。这一政策的正式制定,让ARM摆脱了现金流的困扰,可以全身心投入到芯片研发中。1998年4月17日,发展迅速的ARM控股公司同时在伦敦证券交易所和纳斯达克上市。2007年,划时代的产品——iPhone问世。第一代iPhone使用由ARM设计并由三星制造的芯片。2008年,谷歌推出安卓(Android)系统,也是基于ARM指令集。至此,智能手机进入高速发展阶段,ARM由此确立了在智能手机市场的霸主地位。2016年7月18日,日本软银以234亿英镑(约合310亿美元)收购英国芯片设计公司ARM。2020年9月14日,英伟达正式宣布以400亿美元从软银手中收购ARM。根据协议,英伟达将向软银公司支付价值215亿美元的英伟达股票和120亿美元现金。目前,这笔收购遭到了包括英特尔、高通、特斯拉在内的多家硅谷科技巨头的反对。他们认为,这笔交易对行业不利。此外,中国和欧洲监管机构也可能反对此次收购。等着瞧!ARM内核和体系结构任何ARM芯片都由两个主要部分组成:ARM内核和外围设备。ARM内核ARM内核:包括寄存器集、指令集、总线、内存映射规则、中断逻辑和调试组件等。内核由ARM设计,并以销售的方式授权给芯片厂商(ARM本身不做芯片).例如,为高速设计的CortexA8和A9是ARMv7a架构;CortexM3和M4是ARMv7m架构;前者是处理器(也就是核心),后者是指令集的架构(也简称架构)。外设包括定时器、A/D转换器、内存、i2c、UART、SPI、ROM等,完全由各芯片厂商自行设计,与ARM核相连。不同的芯片厂商拥有不同的外设,从而形成了数量庞大、规格庞大的ARM芯片产业。ARM指令集体系结构指令集的设计是处理器结构中最重要的部分,在ARM术语中称为ISA(InstructionSetArchitecture)。指令集可以说是cpu设计的灵魂,是打开CPU潘多拉魔盒的法宝。如果我们要使用cpu,就只能通过这些指令来操作cpu了。对于32位CPU,这些指令是一系列32位01。不同的值代表不同的机器指令。CPU的硬件可以完美的解析和执行这些指令,比如寻址、计算、异常处理等等。我们在用手机玩王者荣耀的时候,要知道我们发出的每一个动作,最后其实都是翻译成了一系列的机器指令。自1985年ARMv1架构诞生,到2011年,ARM架构已经发展到第八代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又出现了。InsertpicturedescriptionhereCortex-A系列(A:应用)专为不断增长的消费娱乐和无线产品而设计,用于对计算要求高、运行丰富的操作系统并提供交互式媒体和图形体验的应用,例如智能手机、平板电脑、汽车娱乐系统、数字电视、智能本、电子阅读器、家庭网络、家庭网关和各种其他产品。.Cortex-R系列(R:Real-time)面向需要运行实时操作的系统应用,针对深度嵌入式实时应用,如汽车制动系统、电力传输解决方案和大容量存储控制器。Cortex-M系列(M:Microcontroller)该系列针对微控制器领域,主要针对成本和功耗敏感的应用,如智能测量、人机界面设备、汽车和工业控制系统、家电、消费类Cortex-SC系列(SC:SecurCore)其实除了以上三个系列,还有一个主打安全的Cortex-SC系列(SC:SecurCore),主要用于政府安全芯片。ARM的产品阶梯ARM11系列包括ARM11MPCore处理器、ARM1176处理器、ARM1156处理器、ARM1136处理器,均基于ARMv6架构。ARMCortex-A5处理器、Cortex-A7处理器、Cortex-A8处理器、Cortex-A9处理器、Cortex-A15处理器属于Cortex-A系列,均基于ARMv7-A架构。Cortex-A53和Cortex-A57处理器属于Cortex-A50系列,首次采用64位ARMv8架构。2020年,ARM最近发布了基于ARMv8.2指令集的全新CPU架构Cortex-A78。什么是SOC?SoC的全称是:System-on-a-Chip,中文意思是“将系统构建在一块芯片上”。SoC集成了许多手机最关键的部件,如CPU、GPU、内存等。也就是说,它虽然以芯片的形式存在于主板上,但却是由许多元器件封装而成的。比如我们通常所说的高通801、麒麟950、三星的exynos4412、A6等,只是系统元器件封装封装(SoC)后的统称。但是每个包的内容不同,原因也不同。经典的ARM片上系统或所谓的Soc包含许多组件,其中只有一些组件直接源自ARM。首先,内核本身通常深深嵌入设备内部,在设备上下文中通常不直接可见,而调试端口通常是唯一连接到内核本身的外露部分,带有一些胶合逻辑,例如时钟和复位IC。由于ARM内核只有两个中断输入,最常见的外设是某种中断控制器。在外围设备内部,组件通过片上互连总线架构相互连接。对于大多数基于ARM的设备,这是标准的AMBA互连。AMBA指定了两种总线,一种称为AXI的高性能系统总线,以及一种称为APB的低功耗外设总线。APB通常用于连接所有外设,AXI用于内存等高速设备。大多数Device都有一定的片上存储和连接外围存储设备的接口,但要注意,与设备外部连接的不是AMBA总线,它只在设备内部使用,不会外露。示例:Exynos4412SCP我们以三星的Exynos(Orion)4412SCP为例来解释这些概念。三星的Exynos4412SCP是基于Cortex-A9的SOC;如下图所示,Exynos4412包含四个Cortex-A9处理器(核心);Cortex-A9基于ARMv7-A架构(指令集)。从上图可以看出,exynos4412包含了4个Cortex-A9内核,还包含了大量的外围控制器:DRAMController、SROMController、CameraIF、JPEG、GPS/GLONASS、PowerManagement、USBHost、I2C,UART,SPI等。像三星一样,其他跟arm合作的大厂一般都是把自己的CPU和各种外设IP放在一起,然后自己拿图纸流片。生产出来的也是一个正方形,下面有很多针脚。这个东西不仅包括CPU,还包括其他的控制器。这个东西叫做SOC(片上系统)。如下图所示,就是三星最终生产出来的Exynos4412。当然,单靠这个soc是无法运行Android的,需要大量的外设才能组成一个完整的系统,但是大部分最复杂的硬件模块都已经集成到这个soc中了。目前各大厂商做的都是买ARM的授权,拿到ARM处理器的源代码,然后做一些周边IP(或者自己买或者自己设计),组成SOC,上流片。不同的SOC有不同的架构(即CPU与IP的连接方式,有的以总线为核心,有的以DDR为核心)。海思是具有自主产权的SOC架构。然而无论哪家厂商怎么努力,CPU始终没有动过。ARM核心就在那里,那就是中央处理器。怎么理解ARM授权?比如我们制造汽车,ARM公司相当于拥有最先进的“发动机”设计,但它并不“生产发动机”,而是将设计方案授权给各大“汽车制造商”生产,赚来的钱源源不断开发更先进的“引擎”。ARM授权分为ARM架构授权、IP核授权、使用级别授权。如果一个公司想用ARM内核做自己的处理器,比如ST、苹果、三星、TI、高通、华为等,都必须从ARM采购。其架构下的不同级别授权,根据使用需要购买相应级别的授权。架构的授权方式分为三种:架构级授权、内核级授权(ipcore授权)、使用级授权。1.架构级授权意味着可以对ARM架构进行大幅度修改,甚至可以扩展或缩减ARM指令集。苹果就是一个很好的例子。在使用ARMv7-A架构的基础上,扩展了自家苹果的swift架构;2、内核级授权是指可以以一个内核为基础,再添加自己的外设,如USART、GPIO、SPI、ADC等,最终形成自己的MCU。这样的公司有很多。如三星、TI;3.使用等级授权。如果要使用处理器,最基本的是获得使用级别的授权,也就是说你只能使用别人提供的定义好的ip嵌入到你的设计中。在中,你不能更改别人的ip,也不能使用别人的ip,根据这个ip制作自己的包装产品。因此,如果华为分别获得架构授权和IP核授权,意味着它可以根据需要,基于ARM指令集打造自己的内核架构,并可以添加各种片上外设,如通信接口、显示控制接口、GPIO等等,从而产生自己的“处理器芯片”。其实就像我写过一篇文章,我告诉A,你修改后就可以使用了,这就是架构级别的授权。我告诉B你可以在你的文章中引用我的文章,这是内核级授权。我跟C说,我的文章你只能转,不能改,不能添油加醋,那就是用分级授权。综上所述,我们总结一下这几个概念:ARM公司的名字叫ARM:AdvancedRISCMachines;ARM的前身Acorn设计的第一个微处理器叫做ARM:AcornRISCMachine;ARM处理器的名称:以前叫ARM9、ARM11,新的命名规则改为Cortex,分别是Cortex-A、Cortex-R、Cortex-M;A、R、M三个字母加在一起就是ARM。ARM指令集就是ARM架构,比如ARMv8,每个处理器都需要依赖一定的ARM架构来设计;SOC:各大厂商购买ARM的授权,拿到ARM处理器的源代码,然后自己做一些外设IP(买的或者自己设计的),组成SOC,比如三星的Exynos4412,华为的麒麟990。本文转载自微信公众号“一口Linux”,可通过以下二维码关注。转载本文请联系易口Linux公众号。
