自己做网站接入微信和支付宝,wordpress cpu,网站建设未来发展,logo在线设计生成器免费下载前言 ARM既可以认为是一个公司的名字#xff0c;也可以认为是对一类微处理器的通称#xff0c;还可以认为是一种技术的名字。 ARM公司是专门从事基于RISC技术芯片设计开发的公司#xff0c;作为知识产权#xff08;IP#xff09;供应商#xff0c;本身不直接从事芯片生产…前言 ARM既可以认为是一个公司的名字也可以认为是对一类微处理器的通称还可以认为是一种技术的名字。 ARM公司是专门从事基于RISC技术芯片设计开发的公司作为知识产权IP供应商本身不直接从事芯片生产而是转让设计许可由合作公司生产各具特色的芯片。 ARM处理器的内核是统一的由ARM公司提供而片内部件则是多样的由各大半导体公司设计这使得ARM设计嵌入式系统的时候可以基于同样的核心使用不同的片内外设从而具有很大的优势。
一、ARM内核与架构 任何一款ARM芯片都由两大部分组成ARM内核外设。
ARM内核 包括了寄存器组、指令集、总线、存储器映射规则、中断逻辑和调试组件等。 内核是由ARM公司设计并以销售方式授权给个芯片厂商使用的ARM公司本身不做芯片。 比如为高速度设计的Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器就是内核后者是指令集的架构也简称架构。
外设部分 包括计时器、A/D转换器、存储器、i2c、UART、SPI、ROM...等等则完全由各芯片厂商自己设计并与ARM内核衔接配套。不同的芯片厂商就有不同的外设因此构成了数量和规格庞大的ARM芯片产业。
ARM指令集架构 指令集的设计是处理器结构中最重要的一个部分用ARM的术语称之为ISAInstruction Set Architecture。 指令集可以说是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-ACortex-RCortex-M。 很巧合又是这三个字母A、R、M。 Cortex-A系列AApplication 针对日益增长的消费娱乐和无线产品设计用于具有高计算要求、运行丰富操作系统及提供交互媒体和图形体验的应用领域如智能手机、平板电脑、汽车娱乐系统、数字电视智能本、电子阅读器、家用网络、家用网关和其他各种产品。
Cortex-R系列 RReal-time 针对需要运行实时操作的系统应用面向如汽车制动系统、动力传动解决方案、大容量存储控制器等深层嵌入式实时应用。
Cortex-M系列MMicrocontroller 该系列面向微控制器领域主要针对成本和功耗敏感的应用如智能测量、人机接口设备、汽车和工业控制系统、家用电器、消费性产品和医疗器械等。
Cortex-SC系列SCSecurCore 其实除了上述三大系列之外还有一个主打安全的Cortex-SC系列SCSecurCore主要用于政府安全芯片。 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最近发布了一款全新的CPU架构Cortex-A78是基于ARMv8.2指令集。
二、ARM架构演进
ARM架构演进规律主要是
32位到64位低功耗到高性能单核到多核基本指令集到扩展指令集 ARM公司定义了几种主要的ARM指令集结构版本以版本号V1-V8表示。
ARM架构在不断演变的同时仍保持了各个版本之间的兼容性。 ARMv1架构 1985年ARMv1架构诞生该版架构只在原型机ARM1出现过只有26位的寻址空间64MB没有用于商业产品。
ARMv2架构 1986年ARMv2架构诞生该版本架构对V1进行了扩展首颗量产的ARM处理器ARM2就是基于该架构包含了对32位乘法指令和协处理器指令的支持但同样仍为26位寻址空间。其后还出现了变种ARMv2aARM3即采用了ARMv2a是第一片采用Cache的ARM处理器。
ARMv3架构 1990年ARMv3架构诞生第一个采用ARMv3架构的微处理器是ARM6610以及ARM7ARM6作为IP核、独立的处理器、具有片上高速缓存、MMCU和写缓冲的集成CPU寻址空间增大到32位4GB。变种版本有3G和3M。版本3G是不与版本2a相兼容的版本3。版本3M引入了有符号和无符号数乘法和乘加指令。
ARMv4架构 1993年ARMv4架构在V3版上作了进一步扩充是目前应用最广的ARM架构ARM77TDMI、ARM8、ARM99TDMI和Strong ARM均采用了该架构。ARM在这个系列中引入了T变种指令集即处理器可工作在Thumb状态增加了16位Thumb指令集。V4不再强制要求与26位地址空间兼容而且还明确了哪些指令会引起未定义指令异常。
ARMv5架构 1998年ARMv5架构诞生在V4版基础上增加了一些新的指令ARM7EJ、ARM9E、ARM10E和Xscale采用了该架构这版架构改进了ARM/Thumb状态之间的切换效率。这些新增命令有带有链接和交换的转移BLX指令计数前导零CLZ指令BRK中断指令增加了数字信号处理指令V5TE版为协处理器增加更多可选择的指令。此外还引入了DSP指令和支持JAVA。
ARMv6架构 V6版架构于2001年正式发布首先被应用在ARM11处理器。V6版架构在降低耗电量的同时还强化了图形处理性能。它还引进了包括单指令多数据(SIMD) 运算在内的一系列新功能。通过追加有效进行多媒体处理的SIMDSingle Instruction,Multiple Data单指令多数据功能将语音及图像的处理功能提高到了原型机的4倍。此外还引入了混合16位/32位的Thumb-2指令集和Trust Zone技术。
ARMv7架构 2004年ARMv7架构诞生该版本架构采用了Thumb-2技术它是在ARM的Thumb代码压缩技术的基础上发展出来的并且保持了对已存ARM解决方案的完整的代码兼容性。此外ARMv7还支持改良的运行环境来迎合不断增加的JIT和DAC技术的使用。 ARMv7架构还包括 NEON™ 技术扩展可将DSP和媒体处理吞吐量提升高达400%并提供改进的浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。 从这个时候开始ARM以Cortex来重新命名处理器Cortex-M3/4/7Cortex-R4/5/6/7Cortex-A8/9/5/7/15/17都是基于该架构。
ARMv6-M架构 2007年在ARMv6基础上衍生了ARMv6-M架构该架构是专门为低成本、高性能设备而设计向以前由8位设备占主导地位的市场提供32位功能强大的解决方案。Cortex-M0/1/0即采用的该架构。
ARMv8架构 2011年ARMv8架构诞生Cortex-A32/35/53/57/72/73采用的是该架构这是ARM公司的首款支持64位指令集的处理器架构。由于ARM处理器的授权内核被广泛用于手机等诸多电子产品故ARMv8架构作为下一代处理器的核心技术而受到普遍关注。 ARMv8是在32位ARM架构上进行开发的主要被用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域。ARMv8是近20年来ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性已经颠覆了我们对旧的ARM架构的认知。 可以看出从ARMv7架构开始ARM的命名方式有所改变。新的处理器家族改以Cortex命名并分为三个系列分别是Cortex-ACortex-RCortex-M。
Cortex-A针对高性能计算。如我们目前手机SoC中常出现的Cortex-A76等。
Cortex-R针对实时操作处理。主要是面向嵌入式实时处理器。在汽车的电子制动系统工业控制领域等领域比较常见。
Cortex-M专为低功耗、低成本系统设计。目前火热的IoT领域常常见到采用Cortex-M架构的处理器。 三、ARM授权 如何来理解ARM授权呢 就比如我们制造汽车ARM公司相当于拥有最先进的的发动机设计方案但是他不生产发动机而是把设计方案授权给各大汽车厂商生产赚来的钱继续研发更先进的‘发动机’。 ARM授权分为ARM架构授权、IP核授权、使用层级授权 一个公司若想使用ARM的内核来做自己的处理器比如ST、苹果、三星、TI、高通、华为等等必须向ARM公司购买其架构下的不同层级授权根据使用需要购买相应的层级授权。 架构的授权方式有三种架构层级授权、内核层级授权(ip核授权)、使用层级授权。
1.架构层级授权是指可以对ARM架构进行大幅度改造甚至可以对ARM指令集进行扩展或缩减苹果就是一个很好的例子在使用ARMv7-A架构基础上扩展出了自己的苹果swift架构
2.内核层级授权是指可以以一个内核为基础然后在加上自己的外设比如UART、GPIO、SPI、ADC等等最后形成了自己的MCU这种公司很多比如三星、TI;
3.使用层级授权要想使用一款处理器得到使用层级的授权是最基本的这就意味着你只能拿别人提供的定义好的ip来嵌入在你的设计中不能更改人家的ip也不能借助人家的ip创造自己的基于该ip的封装产品。 因此如果华为分别拿到架构授权和ip核授权那么意味着它可以在ARM指令集基础上根据需要创建出自己的内核架构并可添加各种片内外设比如通信接口、显示器控制接口、GPIO等等从而生产出自己的“处理器芯片”。 其实就像我写了一篇文章我告诉甲你可以拿去修改后使用便是架构层级授权我告诉乙你可以在你的文章中引用我的文章便是内核级授权我告诉丙你只能对我的文章进行转发不能更改不能添油加醋便是使用层级授权。
三、ARM v8基础知识
四个异常等级EL0-EL3两种安全状态安全和非安全两种执行状态AArch64 和 AArch32 异常等级 在 ARMv8 中执行发生在四个异常级别之一。在 AArch64 中异常级别决定了特权级别类似于 ARMv7中定义的特权级别。异常级别决定特权级别因此在 ELn 执行对应于特权PLn。类似地具有比另一个更大的n值的异常级别处于更高的异常级别。一个数字比另一个小的异常级别被描述为处于较低的异常级别。 异常级别提供了适用于 ARMv8 架构的所有操作状态的软件执行权限的逻辑分离。它类似于并支持计算机科学中常见的分层保护域的概念。
EL0 Normal user applications.EL1 Operating system kernel typically described as privileged.EL2 Hypervisor.EL3 Low-level firmware, including the Secure Monitor. 通常一个软件例如应用程序、操作系统的内核或管理程序占用一个异常级别。此规则的一个例外是内核中的虚拟机管理程序例如 KVM它在EL2和 EL1 上运行。
安全状态 ARMv8A 提供两种安全状态安全和非安全。非安全状态也称为正常世界。这使操作系统 (OS) 能够与受信任的操作系统在同一硬件上并行运新g并提供针对某些软件攻击和硬件攻击的保护。 ARM TrustZone 技术使系统能够在正常和安全世界之间进行分区。与 ARMv7A 架构一样安全监视器充当在正常和安全世界之间移动的网关。 执行状态 ARMv8 架构定义了两种执行状态 AArch64和AArch32。每个状态分别用于描述使用 64 位宽通用寄存器或 32 位宽通用寄存器的执行。虽然 ARMv8 AArch32 保留了 ARMv7 对特权的定义但在 AArch64 中特权级别由异常级别决定。因此在 ELn 的执行对应于特权PLn。
当处于 AArch64 状态时处理器执行 A64 指令集。当处于 AArch32 状态时处理器可以执行 A32在早期版本的架构中称为 ARM或 T32 (Thumb) 指令集。 四、SOC设计 SoC的全称叫做System-on-a-Chip中文的的意思就是“把系统都做在一个芯片上”。 SoC上集成了很多手机上最关键的部件比如CPU、GPU、内存、也就说虽然它在主板上的存在是一个芯片但是它里边可是由很多部件封装组成的。 比如通常我们所说的高通801麒麟950.三星的exynos 4412A6等等都只是系统部件打包封装SoC后的总称。然而各家的打包封装的内容则不尽相同原因也不尽相同。 经典的ARM系统级芯片或所谓的Soc 包含许多组件其中只有一些直接源自ARM。首先核心本身通常深度嵌入在设备内部在设备范畴内通常不直接可见而调试端口通常是唯一和核心本身相连的外露部分有一些粘合逻辑如时钟和复位集成电路。 由于 ARM 核心只有两个中断输入最常见的外设就是某种中断控制器在外设内部各组件通过芯片上互联总线架构相互连接对于极大多数基于ARM的设备而言这就是标准的 AMBA 互联。 AMBA 指定了两个总线称为AXI的高性能系统总线和称为APB的低功耗外设总线APB通常用于连接所有外设AXI则用于存储器和其他发高速设备大多数设备都有一定数量的芯片上存储以及连接外设存储器设备的接口但是注意与设备的外部连接并不是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还包含了其他的控制器这个东西就叫做SOCsystem on chip。 如下图所示就是三星最终生产的Exynos 4412 当然了光有这个soc还无法运行安卓还需要借助外围大量的外设才能最终形成一个完整的系统但是大部分最复杂的硬件部分模块都已经集成到了这个soc中。 目前各大厂商所做的事情就是买来ARM的授权得到ARM处理器的源代码而后自己搞一些外围IP或者买或者自己设计组成一个SOC后去流片。不同的SOC架构不同就是CPU如何和IP联系起来有的以总线为核心有的以DDR为核心。 海思是拥有自主产权的SOC架构。可是无论任何厂商再怎么折腾都没有怎么动过CPUARM核心就好好的呆在那里那就是中央处理器。 参考链接
到底什么是Cortex、ARMv8、arm架构、ARM指令集、soc一文帮你梳理基础概念【科普】 - 知乎
ARM架构发展史