ARM64、ARMel和ARMhf处理器架构概述
1. 概述
在本教程中,我们将了解一般的 ARM 处理器。然后,我们将关注Debian ARMel、ARMhf 和 ARM64 端口并了解它们的区别。
2. 背景
ARM 代表Acorn RISC 机器。它是一系列 RISC(精简指令集计算机)架构,适用于为各种环境配置的计算机处理器。大多数移动设备和嵌入式系统都使用 ARM 处理器内核。
现代 ARM 处理器提供了早期型号不支持的功能,因为 ARM 架构在不断发展。
Debian 目前提供了三个 ARM 端口来为不同类型的机器提供最好的支持:
- ARMel 端口:支持不带硬件 FPU(浮点单元)的较旧的 32 位 ARM 处理器,尤其是在 openRD、多功能和插件计算机等平台上
- ARMhf 端口:支持至少一个具有 ARMv7 架构的 ARM 32 位处理器、Thumb-2 和 VFP3D16
- ARM64 端口:适用于至少实现 ARMv8 架构的 64 位处理器
Debian 还有其他功能不同的 ARM 硬件端口 。
虽然所有当前可用的 ARM CPU 都可以在大端或小端模式下运行,但大多数都使用小端模式。ARM64、ARMhf 和 ARMel 仅支持 little-endian 系统。
还有一个名为multiarch 的包,它允许我们在同一台机器上安装来自多个架构的库包。但是,它不能同时安装多个体系结构版本的应用程序。
3. ARMel
**ARMel 或 ARM EABI 是 Debian 中用于 ARM架构版本 ARM4T、ARM5T 和 ARM6 的默认端口。**随着 Debian 10 (buster) 的发布,对 ARM4T 的支持停止了。ARMel 是嵌入式 ABI(应用程序二进制接口)的新版本。它以小端模式运行。
EABI 是ABI 家族之一,适用于 Linux 的 GNU EABI 就是其中之一。
ARMel 可以通过兼容模式支持硬件浮点。这会降低性能,但会创建与为没有浮点单元的处理器编写的代码的兼容性。
它还支持不支持硬件浮点单元的早期 32 位处理器。 让我们使用这个命令来检查我们的系统是否在 ARMel 上运行:
$ readelf -A /proc/self/exe | grep Tag_ABI_VFP_args
如果是 ARMel 系统,该命令返回空白;如果是 ARMhf,则返回Tag_ABI_VPS_args标签。
例如,Raspberry 发行版将返回一个VFP寄存器标记,因为它在 ARMhf 上运行。但是,软浮点 Debian Wheezy 发行版会给出空白输出,因为它在 ARMel 上运行。
Debian ARMel 支持的一些平台包括带有 ARM CPU 的 Marvell 的 Kirkwood 和 Orion5x SoC,以及带有 QEMU 仿真器的 Versatile 平台。
4. ARMhf
**ARMhf(ARM 硬浮点)端口的开发是为了支持大多数现代 32 位 ARM 板上的浮点单元。**浮点对于计算和基于数字信号处理的应用中的关键精度要求非常有用。
运行 ARMhf 端口的最低要求是具有 ARM 矢量浮点规范 (VFPv3) 版本 3 的 ARMv7 CPU。
支持 ARMhf 的平台包括:
- freescale MX53 快速入门板:用于开发的开源平台,配备 1 GHz ARM Cortex-A8 处理器
- NVIDIA Jetson TK1:包含 32 位 ARM Cortex-A15 CPU 的开发板
- SolidRun Cubox-i4Pro:带有 ARM Cortex A9 处理器的小型计算平台
要检查我们的系统是否在 ARMhf 上运行,我们可以使用以下命令:
$ dpkg --print-architecture
armhf
uname -a和arch等替代命令将显示arm7l作为输出。这是一组较旧的 32 位 RISC 处理器。
5. ARM64
**ARM64 是 64 位 ARMv8 架构的 Debian 端口名称,在上游工具链和其他一些发行版中称为 aarch64。**它始于 2010 年,早在支持它的硬件可用之前。这是为了确保它到达后会有东西运行。
ARM64 硬件于 2013 年首次在 iPhone 5S 上的消费产品中推出,但访问它受到限制。Debian 首次在 Debian 8 (Jessie) 操作系统中发布了 ARM64 端口。
Debian ARM64 支持以下平台:
- Applied Micro (APM) Mustang/X-Gene:第一个已知的具有 ARMv8 架构和 8 核 CPU 的平台
- ARM Juno 开发平台:具有 6 核 CPU 的开放和供应商中立的 ARMv8 开发
我们可以使用这个命令来获取我们的处理器类型和我们 CPU 的各种特性的列表:
$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 58
...truncated
采用 ARM64 架构的设备包括 Raspberry Pi 2 和 3、Microsoft HoloLens 2、DragonBoard、物联网设备、现代台式机和笔记本电脑、智能手机等。