我已经开始研究不同的基于 ARM 的目标,但我仍然缺少关于 ARM 内核、架构、指令集和内核系列的一些东西。看看这里的维基百科页面:http ://en.wikipedia.org/wiki/ARM_architecture#ARM_cores 我看到每个架构都有多个 ARM 架构和多个系列。例如对于 ARMv6 架构,有 ARM11 和 ARM-Cortex-M 系列。ARMv7 和其他版本也是如此。鉴于架构相同,ARM11 和 ARM Cortex-M 有什么区别?鉴于它们实现相同的架构,ARM11 和 ARM Cortex-M 是否都支持相同的指令集?
2 回答
体系结构是规范,即体系结构的实现应该支持的寄存器、指令和操作模式的集合。
系列是架构的特定详细实现,即创建 ARM 内核所需的实际硬件细节。最后,内核是架构的特定实现,即晶体管和其他离散部件的实际蓝图,需要创建一个 ARM CPU。
ARM 体系结构是模块化的,因此系列可能只实现该体系结构的某些功能,而不能实现其他功能。系列也可能具有架构中没有的扩展,并且为了使事情变得更有趣,同一个系列中的核心通常会在它们支持的功能上有所不同。
ARM 内核被称为内核而不是芯片的原因是特定芯片可能包含一个或多个内核(假设内核支持它)或者可能具有与其他组件(I/O 控制器、内存接口等)集成的内核。相同的芯片。
ARM11 和 ARM Cortex-M 是针对不同市场在 ARMv6 架构中实现功能的不同系列:ARM-11 智能手机和平板电脑以及 Cortex-M 微控制器 AFAIK。
没有明确的答案,而且情况可能随着时间的推移而发生变化——但我认为家庭术语在这种情况下已经失去了大部分价值。
架构定义了一组功能(标准和可选)。随着时间的推移,您可能会看到作为扩展添加的新功能,然后作为架构的标准功能推出。架构涵盖的不仅仅是指令集、系统级功能(如内存行为)、特权和保护、异常模型等。
还有一些应用领域——在 Cortex 命名法中的高级划分为 MCU(低功耗、确定性)、实时(确定性、安全和错误功能)和应用(高端、通用)。这些导致架构的进一步专业化,因此有 ARMv8-M、ARMv8-R 和 ARMv8-A(您最终将在操作系统级别编写完全不同的代码以利用这些功能)。
对于较旧的处理器,特定设计可能会有所变化,以改变功能集并专注于不同的市场,但这与 Cortex 设计的区别并不明显(例如,ARM9 系列的高速缓存、紧密耦合-memory、MMU/MPU 是存在的那种选项)。
Cortex-M 可以被视为一个家族,但涵盖了广泛的性能范围(超过两种类似的架构),以及一系列安全功能(使用 ARMv8-M)。
您还可以谈论“小型”Cortex-A 系列,尽管对于特定的应用程序,会有一个特定的内核比其他内核更适合。也有 big.LITTLE 配对,但它们不会被描述为一个家族(但它们特别共享一个精确的架构)。
单一的特定架构可以保证基线功能,但不一定会限制许多代码的可移植性,因为随着架构的发展,不同的 ISA 仍然很常见。(M-class 代码将在 A-class 设备上运行,至少如果您小心的话,并且从 A64 状态切换)。
ARM 内核的另一个复杂之处在于,特定设备中更广泛的系统大部分都可以免费供供应商定制——尽管如果他们选择针对特定类型的应用程序,也有一些可用的标准。查看任何特定的供应商,您甚至可能会谈论全都基于单个 ARM 内核的一系列部件。