一文彻底分清ARM架构、内核、指令集等相关概念

任何学习嵌入式/单片机的朋友都绕不开ARM,但初学者总是对ARM架构、内核、指令集等相关概念不够清晰或者混淆,本文帮助入门的朋友彻底弄清楚。

目录

1.芯片、CPU、SOC

2.ARM公司

3.ARM架构与内核、指令集

3.1架构与内核

3.2架构与指令集

4.ARM架构和处理器发展史

4.1ARM架构

4.2ARM处理器


 原文地址:一文彻底分清ARM架构、内核、指令集等相关概念 

1.芯片、CPU、SOC

在谈论ARM之前,必须把芯片、CPU、SOC这些概念解释清楚,芯片是一个广泛的词语,属于半导体元件的总称。英语会更准确:integrated circuit(集成电路)。很多人把芯片等同于CPU,这显然是错误的。CPU只是属于芯片这个概念范围内的一种。

而我们日常所谈论的手机处理器往往指的是SOC。SOC全称System on Chip,即片上系统,也就是集成了很多东西在一个芯片上,简单地说SOC包含了CPU加上很多其他模块。

复杂地说SOC包含了微处理器(MPU Micro Processor Unit)、数字IP核、模拟IP核和存储器。微处理器,也即是逻辑核,包括CPU、时钟、中断控制器、I/O端口以及用于各种IP核之间的粘合逻辑等等,负责系统的控制。数字IP核包含了我们的加速器,能够减轻处理器的计算负担。模拟IP核包含了ADC、DAC、PLL等模拟电路,负责与外界的模拟信息进行数据传输。存储器包括各种易失、非易失以及Cache等存储器,用于储存系统运行的代码以及数据。

这里要指出一个概念上的CPU问题,CPU其实是一个相对概念(注意理解Unit单元),当我们指手机的CPU,就是指这个手机的中央处理单元,也就是SOC,比如高通骁龙888,当我们指SOC的CPU则是指SOC中的中央处理器单元,也就是微处理器(MPU),当我们指MPU的CPU时,则是指MPU的中央处理单元。你要是看多了英文资料,你就会发现老外很少用CPU这个词,而基本上都用Processor处理器,有处理功能的都可以叫处理器。

附:MCU(MicroController Unit)和SOC并没有特别本质的区别,SOC比MCU集成了更多东西,更强大而已。而单片机这个概念更是广泛,MCU和SOC都可以称为单片机,不详细论述了。如51、STM32F1、STM32F4等都可以叫MCU,而STM32MP、S3C2440、IMX6ULL、高通骁龙、海思麒麟等都可以叫SOC,他们也都可以被叫做单片机,当然一般来说单片机指的是MCU。

2.ARM公司

首先ARM是家公司,在1990年成立,全名是“Advanced RISC Machines Ltd.,”——先进精简指令集机器公司.ARM公司是一家知识产权(IP)供应商,它不制造处理器,而是设计,售卖设计器方案(不止设计处理器,但主要是处理器)。

ARM公司的历史就不赘述了,感兴趣的直接去他官网就能知道。https://www.arm.com/

也就是说ARM公司设计出一种处理器设计方案,然后其他有制造SOC、MCU需求的公司,比如三星、ST、TI、IMX、华为等,去购买ARM公司的方案,在他的基础上删删改改,加些外围东西变成自己想要的SOC、或MCU设计,再去找制造公司生产。

3.ARM架构与内核、指令集

3.1架构与内核

首先要理解架构是什么东西。架构指的是一种大体上的方案,比如造房子,高楼、平房、独栋别墅,这就是三种不同的架构。

你想造一个房子,在具体的细节实现之前,你必须思考,我到底要造高楼、平房、独栋别墅.........然后我确定我要造平房,什么样的平房?我要造三室一厅的平房,这就是一种基于平房架构的内核,我要造四室一厅的平房,这就是基于平房架构的另外一种内核。

先有架构,再有内核,一个架构可以衍生出多种内核

内核之所以称之为内核,是因为他是在SOC、MCU内部中最核心的逻辑处理部分,就是SOC、MCU的CPU。所以内核也可以叫做处理器。

别的公司可以向ARM公司购买架构使用权,ARM给你架构,你自己去设计内核,这就是自研内核,比如三星、高通、苹果公司都有基于ARM架构的自研内核。ARM公司自己针对自己架构设计的内核又称作公版内核,别的公司也可以购买ARM的公版内核使用权,比如华为用的就是公版内核。

现以IMX6ULL芯片为例,IMX6ULL芯片,又可以叫IMX6ULL SOC。其内部组成如下:

用红框标出来的部分叫做内核,为ARM Cortex-A7,而这个内核时基于ARMv7-A 架构。

以STM32F407芯片为例,STM32F407芯片又可以叫做STM32F407 MCU(太大,只展示一部分):

内核为ARM Cortex-M4,而这个内核基于ARMv7E-M架构。

3.2架构与指令集

ARM架构ARM指令集经常放在一起说。经常说成ARM指令集架构,实际上并不完全相等。

ARM架构包含了指令集、寄存器集、存异常模型、内存模型等内容。

指令集是指处理器能够识别并执行的指令集合。

ARM,Advanced RISC Machines,先进精简指令集机器,其中RISC是Reduced Instruction Set Computer的缩写,意为精简指令集处理器,ARM是RISC最突出的代表,其它比较有名的RISC指令集还有:MIPS,PowerPC,SPARC,RISC-V。

与RISC相对的是CISC,Complex Instruction Set Computer,复杂指令集处理器,闻名世界的X86指令集就是一种CISC指令集。

ARM指令集也是一个统称,实际上ARM指令集还分为 ARM64指令集、 ARM32指令集、THUMB指令集、THUMB-2指令集、NEON指令集、VFP指令集、DSP指令集。不同版本架构支持不同指令集。

4.ARM架构和处理器发展史

4.1ARM架构

ARMv1:1985年发布,最早的ARM架构。

ARMv2:1986年发布,改进了ARMv1,增加了32位地址总线和指令集扩展(增加了一些指令)。

ARMv3:1992年发布,支持虚拟内存、增加了指令集扩展,包括支持协处理器(coprocessor)。

ARMv4:1994年发布,增加了Java虚拟机指令集扩展(Jazelle)和Thumb指令集,提高了代码密度。

ARMv5:1997年发布,增加了支持嵌入式Java的指令集扩展(Jazelle-RCT)、增加了支持浮点运算的指令集扩展(VFP)。

ARMv6:2002年发布,增加了Thumb-2指令集,提高了代码密度和执行效率,同时也增加了一些指令集扩展,包括支持Jazelle-DBX。

ARMv7:2004年发布,增加了基于TrustZone的安全扩展、NEON指令集扩展,支持向量浮点运算(VFPv3)等。

ARMv8:2011年发布,增加了AArch64架构,支持64位处理器,同时保留了AArch32架构,提高了性能和能耗效率。

ARMv9:2021年发布,增加了Confidential Compute Architecture(CCA)和Realms技术,提高了安全性和隔离性。

4.2ARM处理器

针对每一种ARM架构,ARM都设计了很多的处理器(内核),这里就不列出来了,感兴趣去官网能够查找。这里主要讲讲命名的变化。

主要分为经典处理器、Cortex-M系列处理器、Cortex-R系列处理器、Cortex-A系列处理器

经典处理器都是按照数字命名的,直到ARM11。也就是推出架构v7的时候,ARM公司把产品并分为三大产品线,分别是Cortex-A、Cortex-R和Cortex-M。

近两年推出的cortex-X并不是单独的产品线,它可看做cortex-A的升级版,两者的市场定位是一样的。

Cortex-A系列处理器是针对高端应用而设计的,通常应用于智能手机、平板电脑、数字电视和网络设备等。这些处理器拥有高性能、大规模的内存管理单元以及大量的内部缓存,支持多核处理和虚拟化技术。

Cortex-R系列处理器是针对实时应用而设计的,通常应用于汽车、工业控制和医疗设备等。这些处理器拥有极低的延迟、高精度的计时器和内部存储器保护机制,能够在实时响应和高可靠性方面表现出色。

Cortex-M系列处理器是针对低功耗、低成本、嵌入式应用而设计的,通常应用于传感器、智能家居、工业控制和医疗设备等。这些处理器拥有低功耗、小尺寸和低成本等优点,同时也支持实时性、安全性和可靠性等特性。

原文地址:一文彻底分清ARM架构、内核、指令集等相关概念

系列文章合集:

FreeRTOS文章合集

嵌入式Linux基础文章合集

ARM学习系列合集

C语言学习系列合集

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: Linux内核是一种开源的操作系统内核,是Linux操作系统的核心组成部分。它提供了操作系统与硬件之间的抽象层,负责管理系统的资源、调度任务、提供驱动程序等功能。 Linux内核采用分层的架构,包括硬件抽象层、系统调用层、进程管理层、文件系统层和网络层等。硬件抽象层负责将不同硬件设备的接口统一起来,使得上层的软件可以方便地与硬件进行通信。系统调用层提供了一组API供用户进程调用,如文件操作、网络通信等。进程管理层负责进程的创建、销毁以及调度等任务。文件系统层负责文件的管理和存储。网络层负责网络协议的实现和网络通信。 Linux内核的工作原理可以简单概括为以下几个关键步骤。首先,当一台计算机启动时,BIOS会加载内核映像到内存中,并执行启动代码。然后,内核初始化各种数据结构、驱动程序和关键服务。接下来,内核创建一个初始的用户空间进程,称为init进程。init进程是所有其他进程的祖先进程。在此之后,内核根据调度算法来决定哪个进程可以使用CPU,并依次执行。同时,内核会提供一个中断机制,以便处理硬件事件的优先级。 内核还提供了许多系统调用供用户进程调用,以实现对各种功能的访问。当用户进程需要操作文件、创建进程或进行网络通信时,会通过系统调用将请求传递给内核,由内核代表用户进程执行相应的操作。内核通过调度算法来分配CPU时间片,并通过虚拟内存管理来管理内存资源的分配和回收。 总而言之,Linux内核是一个高度可配置和模块化的操作系统内核,通过分层架构和系统调用机制实现了对硬件的抽象和对用户进程的管理。了解Linux内核架构和工作原理,有助于深入理解Linux操作系统以及开发和调试相关应用程序。 ### 回答2: Linux是一种开源的操作系统内核,其设计目标是为了在不同的计算机硬件平台上提供高效的、稳定的和安全的操作系统服务。 Linux内核架构可以分为三个主要部分:进程管理、内存管理和文件系统管理。 在进程管理方面,Linux内核使用了多任务处理技术,可以同时运行多个进程。每个进程都有独立的地址空间和资源,通过调度算法可以合理分配CPU时间片,优化系统的响应速度和资源利用率。 在内存管理方面,Linux内核使用了虚拟内存技术,将物理内存和逻辑内存进行了映射,使得每个进程都有独立的地址空间。当物理内存不足时,Linux内核会通过页面置换算法将暂时不使用的页写入磁盘交换空间,以释放物理内存供其他进程使用。 在文件系统管理方面,Linux内核支持多种文件系统,包括传统的ext3和ext4文件系统,以及现代的Btrfs和XFS文件系统。它负责文件的读写操作,以及文件的权限控制和磁盘空间的管理。 Linux内核的工作原理可以简单概括为以下几个步骤:首先,启动引导程序将内核加载到内存中,并进行初始化。然后,内核分配一部分内存作为内核空间,用于存放内核代码和数据结构。接着,内核根据系统的硬件配置进行设备的初始化和驱动程序的加载。之后,内核根据系统的启动参数和配置文件进行一系列的初始化工作,包括启动系统服务和加载用户程序。最后,内核进入主循环,不断地处理中断、调度进程、管理内存和文件系统,以提供稳定的操作系统服务。 总之,Linux内核是一个复杂而高效的软件系统,它通过进程管理、内存管理和文件系统管理等功能,实现了操作系统的基本功能。了解Linux内核架构和工作原理,有助于我们更好地理解和使用这个优秀的开源操作系统。 ### 回答3: Linux内核是一个开放源代码的操作系统内核,由一个核心程序和一组通用的系统工具组成。它是Linux操作系统的核心,负责处理硬件设备、管理系统资源、实现进程管理、文件系统和网络功能等。 Linux内核架构可以分为两个层次:用户空间和内核空间。用户空间包括用户应用程序,如图形界面、终端程序等,它们通过系统调用接口与内核进行通信。内核空间包括内核核心的数据结构和程序,用于管理和控制硬件资源。 Linux内核的工作原理可以概括为以下几个方面: 1. 进程管理:内核负责创建、调度和终止进程。它使用进程描述符(task_struct)来跟踪进程的状态和资源使用情况,并根据调度算法分配CPU时间片给不同的进程。 2. 内存管理:内核负责管理系统的物理内存和虚拟内存。物理内存管理包括内存分配和释放,虚拟内存管理包括页面置换和页面回写等策略,以优化内存的使用效率。 3. 文件系统:内核提供文件系统接口,管理文件和目录的创建、读写和删除等操作。它通过虚拟文件系统层(VFS)将不同的文件系统统一管理,如ext4、NTFS等。 4. 设备驱动:内核提供了访问硬件设备的接口,通过设备驱动程序与硬件交互。不同的硬件设备需要不同的驱动程序,如网卡、显卡、声卡等。 5. 网络功能:内核提供TCP/IP协议栈和网络设备驱动程序,用于实现网络通信功能。它提供网络连接的建立、数据传输和断开等功能,支持各种网络协议,如HTTP、FTP、SSH等。 总的来说,Linux内核是一个非常复杂且功能强大的软件,它负责管理计算机的各种资源和提供操作系统的各种功能。通过深入理解其架构和工作原理,我们可以更好地理解和使用Linux操作系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闪耀大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值