10、常见嵌入式Linux系统处理器架构解析
本文详细解析了嵌入式Linux系统中常见的八种处理器架构,包括ARM、AVR32、Intel x86、M32R、MIPS、Motorola 68000、PowerPC和Super-H,介绍了各架构的背景、特点、应用领域及Linux支持情况。文章还提供了架构选择的流程图与决策树,从成本、性能、软件资源等方面指导合理选型,并对各架构在计算性能、功耗、内存管理方面的表现进行了对比分析。最后展望了多核化、
常见嵌入式Linux系统处理器架构解析
1. 概述
Linux能够在大量且不断增长的机器架构上运行,在编写本文时,官方内核支持24种架构,还有开发者在独立的开发树中维护其他架构,这些架构未来可能会被集成到官方内核中。本文将重点介绍8种用于嵌入式Linux系统的架构,按字母顺序排列分别为:ARM、AVR32、Intel x86、M32R、MIPS、Motorola 68000、PowerPC和Super - H。
此外,Linux还能在基于uClinux的系统上运行,这些系统通常没有传统的内存管理单元(MMU)。例如基于Analog Devices的Blackfin处理器,以及Xilinx的Microblaze软可合成IP核的系统。但本文主要关注具有完整MMU的32位及以上系统,因此不会详细介绍这些无MMU架构。
2. ARM架构
- 架构背景 :ARM代表Advanced RISC Machine,由ARM Holdings Ltd维护和推广。与其他芯片制造商不同,ARM Holdings本身不制造处理器,而是为客户设计基于ARM核心的完整CPU内核,收取设计许可费用,让客户自行选择制造芯片的地点。
- 指令集与兼容性 :所有ARM处理器共享相同的ARM指令集,支持特定ARM指令集版本的所有变体在软件上完全兼容,但这并不意味着所有ARM CPU和开发板的编程和设置方式都相同,只是满足特定架构版本的ARM处理器的汇编语言和二进制代码相同。当前使用的架构版本包括ARMv4T(引入Thumb指令集)、ARMv5TE(“Xscale”部件的基础)、ARMv6(如诺基亚基于TI - OMAP的设备和基于ARMv6KZ的苹果iPhone)和ARMv7。
- 制造商与应用领域 :目前,Marvell(前英特尔,“Xscale”品牌)、东芝、三星等众多厂商都生产ARM CPU。ARM架构在从手机、PDA到网络设备等众多应用领域都非常受欢迎。
- Linux支持情况 :Linux支持40种不同的ARM CPU和总共1832种不同的机器类型。大多数主流CPU和开发板都得到支持,如诺基亚Linux互联网平板电脑中使用的德州仪器OMAP CPU,以及许多网络设备中使用的IXP网络处理器。如需了解ARM系统支持的完整和最新列表及其详细信息,可访问http://www.arm.linux.org.uk/developer/machines。关于ARM架构本身及其指令集的信息,可参考David Seal编辑的《ARM Architecture Reference Manual》和Steve Furber的《ARM System - on - Chip Architecture》,以及ARM官网http://www.arm.com上的资料。
3. AVR32架构
- 架构背景 :AVR32于2006年进入市场,是由Atmel公司设计的32位微处理器架构。Atmel公司还生产用于深度嵌入式场景的AVR 8位微控制器设备。虽然AVR32和AVR名称相似,但除了拥有相同的原始设计中心外,它们并无关联。
- 特点 :AVR32包含多个子架构,支持常见的DSP和Java加速指令。它提供了几种CPU操作模式,支持固定宽度的16位指令和“扩展”32位指令。16位宽度的压缩指令在某些方面与ARM Thumb指令集类似,都能在不损失32位设备优势的情况下压缩指令内存使用,且有观点认为AVR32在代码密度和整体性能方面更高效。截至编写本文时,AVR32仅用于Atmel自己的产品中。
- Linux支持情况 :2006年初,Linux向AVR32的初始移植在Linux内核邮件列表上宣布。截至目前,官方Linux内核支持一种机器类型(at32ap)以及几个开发板。如需了解更多关于AVR32 Linux的信息,可参考http://avr32linux.org和社区维护的http://www.avrfreaks.net。
4. Intel x86架构
- 架构发展 :x86家族始于1985年英特尔推出的386处理器,包括其所有后续产品,如486、奔腾系列、NetBurst(P6)、至强、酷睿和酷睿2等,以及其他厂商(如国家半导体和AMD)生产的兼容处理器。英特尔仍然是x86家族的主要参考和最大的处理器分销商。近年来,将传统PC功能与386家族处理器的CPU核心集成形成片上系统(SoC)成为新趋势,例如AMD从国家半导体收购的Geode家族,用于OLPC的第一代XO笔记本电脑。
- 在Linux中的地位 :尽管x86是运行Linux最流行和最广为人知的平台,但在传统嵌入式系统市场中所占份额较小。大多数情况下,由于复杂性、功耗(尽管这种情况正在改变)和总体成本等原因,设计师更倾向于选择ARM、MIPS和PowerPC处理器而非i386。然而,i386仍然是使用最广泛且经过充分测试的Linux平台,拥有最大的Linux软件基础。许多应用程序和附加组件先在i386上开发,然后再移植到Linux支持的其他架构上。Linux内核最初也是为i386编写的。经过多年来自Linus Torvalds的强烈抵制,x86架构最终在官方Linux内核中拥有了自己的内置调试器。
- 特殊支持情况 :对于大多数i386嵌入式系统,内核在处理不同的x86 CPU和相关开发板时差异不大,必要时会使用少量#ifdef语句来适应特定CPU或开发板的特性,但这种情况很少。不过,Voyager平台是个例外。Voyager是一个早已停用的平台,如果不是James Bottomley(Linux SCSI维护者和Voyager爱好者)的努力,主流Linux可能早已停止对它的支持。他甚至重写了底层x86架构支持代码的各个部分来处理Voyager的各种怪异特性。
- 资料获取 :i386基于的PC架构是文档最丰富的架构之一。有许多书籍和在线文档以多种语言讨论该架构的细节,各处理器厂商也提供相关文档,其中一些非常全面。若想了解现有文档的范围,可在亚马逊网站的书籍板块搜索“pc architecture”。关于i386和PC架构的信息,英特尔出版的《Intel Architecture Software Developer’s Manual》(包括第1卷:基本架构、第2卷:指令集参考和第3卷:系统编程指南)是传统的参考资料,内容丰富,但仅限于英特尔的产品。这些文档的获取方式可能会有所不同,目前可从英特尔文献中心以电子PDF格式下载。
5. M32R架构
- 架构背景 :M32R是2003年推出的32位微处理器架构,由瑞萨科技设计,可通过硅芯片和FPGA合成软逻辑内核实现。与许多其他基于FPGA运行Linux的系统不同,M32R实现了完整的MMU,因此可以运行原生Linux内核,而无需使用uClinux的用户空间实用工具。
- 应用领域与Linux支持 :M32R已应用于各种领域,从PDA、相机等消费电子设备到发动机控制单元。Linux移植支持近12个基于M32R的平台。如需了解更多关于该移植的信息,可访问http://www.linux - m32r.org。
6. MIPS架构
- 架构背景 :MIPS由John Hennessey提出,是斯坦福大学无互锁流水线阶段微处理器项目(MIPS)的成果。MIPS曾是SGI销售的工作站和服务器,以及任天堂64位(N64)系统和索尼PlayStation 1和2等游戏机的基础,还用于第二代TiVo和无数其他消费电子设备。MIPS Technologies Inc.像ARM一样向第三方授权CPU内核,但与ARM不同的是,MIPS有许多不同程度差异的指令集实现方式。32位MIPS实现可从IDT、东芝、RMI(Alchemy)、NXP(原飞利浦)和LSI等制造商处获得,64位实现可从IDT、LSI、NEC、NXP(原飞利浦)、博通和东芝等获得。此外,用于软逻辑FPGA设备的可合成MIPS IP核市场也在不断增长。
- Linux移植情况 :Linux向MIPS的初始移植主要是为了支持基于MIPS的工作站,但这些工作站现在大多已停用。最终,移植范围也扩展到基于MIPS的开发板和嵌入式系统。为了适应各种CPU和基于它们构建的系统,内核中MIPS部分的布局根据内核将运行的系统类型进行了目录划分。同样,给定MIPS系统的内核配置主要受所使用开发板类型的影响,开发板上实际使用的MIPS芯片类型远不如其所处环境(即开发板本身的特性)重要。
- 支持现状 :与英特尔x86或PowerPC等其他架构相比,Linux对MIPS的支持更为有限。实际上,很少有主流发行版移植到MIPS。商业供应商对MIPS的支持大多限于嵌入式架构。不过,有Debian对大端和小端MIPS的移植,一些社区嵌入式发行版也可以针对MIPS,像MontaVista这样的嵌入式Linux供应商也积极支持MIPS。许多PDA和开发板制造商也积极支持在其基于MIPS的硬件上进行Linux移植。虽然MIPS缺少一些在类似英特尔x86系统的桌面Linux环境中可能期望的功能,但对于许多嵌入式Linux需求来说已经足够。如需了解更多关于Linux MIPS移植的一般信息,可访问官方网站http://www.linux - mips.org,该网站包含支持的系统列表、文档、链接和其他有用资源。由于MIPS分为多个平台,需要参考系统制造商提供的数据来评估或实现Linux支持。MIPS Technologies Inc.官方网站推荐的一本通用资源是Dominic Sweetman的《See MIPS Run》,也可在MIPS网站上获取PDF格式的《MIPS Architecture for Programmers》三卷系列资料,包括第I卷:MIPS架构介绍、第II卷:MIPS指令集和第III卷:MIPS特权资源架构。
7. Motorola 68000架构
- 架构背景 :Motorola 68000家族在Linux术语中称为m68k。配备MMU的版本在Linux下得到支持已有很长时间,无MMU的版本从2.6内核开始得到支持。在20世纪80年代,m68k是仅次于英特尔x86的流行架构,除了用于Atari、苹果和Amiga等许多主流系统,以及惠普、太阳和阿波罗等公司的流行工作站系统外,它也是嵌入式系统开发的首选平台。然而,近年来,嵌入式系统设计的兴趣已从m68k转向ARM、MIPS、SH和PowerPC等较新的架构。尽管如此,偶尔仍会出现基于该经典架构的新开发板。
- Linux支持情况 :Linux支持许多基于m68k的系统,包括前面提到的主流和工作站系统,以及摩托罗拉和BVM的VME系统。由于这些系统差异很大,内核树的构建考虑了这些差异,便于添加其他基于m68k的系统。每个系统都有自己的特定模块来与硬件接口,例如中断向量表和相关处理函数。每个系统处理这些的方式不同,内核源代码通过为每种类型的系统提供不同的函数来处理中断设置和处理,反映了这种差异。
- 软件支持现状与资料获取 :由于m68k配备MMU的版本如今在新的前沿设计中很少使用,其软件支持相对滞后。例如,目前没有真正的Java支持(不过由于Sun的Java虚拟机开源,这种情况可能会改变),并且该处理器架构也未被列入某些其他用户级应用程序支持的架构列表中。如需了解该移植的最新信息、支持的硬件和相关资源,可访问m68k Linux移植主页http://www.linux - m68k.org。Debian在m68k方面做了很多工作,如果计划部署基于m68k的Linux系统,可以查看其文档和邮件列表。由于没有像英特尔x86那样的标准m68k平台,没有单一的参考资料涵盖所有基于m68k的系统。不过,有许多教科书和在线资源讨论m68k的传统用途及其编程。摩托罗拉通过其文献中心免费提供《68000 Family Programmer’s Reference Manual》和《M68000 8 - /16 - /32 - Bit Microprocessors User’s Manual》,在任何在线书店搜索“68000”还能找到更详细的包含示例和应用的资料。
8. PowerPC架构
- 架构背景 :PowerPC(PPC)架构是苹果、IBM和摩托罗拉(现为飞思卡尔)“AIM联盟”合作的成果。它继承了三家公司的理念,特别是IBM的性能优化增强RISC(POWER)架构,该架构目前仍然存在,并在IBM的许多服务器产品中作为64位主力架构广泛使用。PowerPC最初以用于苹果Mac电脑而闻名,但也有来自IBM和其他供应商的基于PowerPC的工作站,以及许多基于PowerPC的嵌入式系统。例如,流行的TiVo系统基于嵌入式PowerPC处理器,TiVo实际上为使Linux在这种PowerPC变体上运行做了最初的工作。这并非易事,因为嵌入式变体在操作系统层面可能有很大差异,例如用特殊的软可编程虚拟内存实现替代常规的虚拟内存实现,这需要内核做更多的工作。
- Linux支持情况 :与i386和ARM一样,PowerPC是Linux中支持最好的架构之一,这从Linux可以运行的大量PPC CPU和系统中可见一斑。显然,PowerPC Linux受益于背后的大公司支持,但也得益于一小群非常专注的核心PowerPC开发者。其中一些人(如Benjamin Herrenschmidt)为IBM工作,而其他人(如Tom Rini和Matt Porter等来自Embedded Alley的人)最初将PowerPC作为副业和个人兴趣,最终在MontaVista等嵌入式Linux公司工作。当然,任何关于PowerPC Linux支持的描述都不能不提及它的维护者Paul Mackerras,他早在上个世纪就开始了“pmac”(即苹果PowerMac)的开发,现在负责协调Linux PowerPC开发(包括32位和64位)的整体工作。
- 应用支持情况 :部分得益于IBM(和其他参与者)的赞助、奖励和其他相关开发工作,许多在英特尔x86上运行的应用程序也可以在PowerPC上使用。
各架构特点总结表格
| 架构名称 | 推出时间 | 制造商特点 | 指令集特点 | 应用领域 | Linux支持情况 | 资料获取途径 |
|---|---|---|---|---|---|---|
| ARM | - | ARM Holdings设计,多家厂商制造 | 共享ARM指令集,不同版本有不同特性 | 手机、PDA、网络设备等 | 支持40种CPU和1832种机器类型 | http://www.arm.linux.org.uk等 |
| AVR32 | 2006年 | Atmel设计并用于自家产品 | 支持16位和32位指令,类似ARM Thumb | Atmel产品 | 支持一种机器类型和几个开发板 | http://avr32linux.org等 |
| Intel x86 | 1985年起 | 英特尔为主,其他厂商有兼容产品 | 不断发展,有多种扩展 | 传统PC、部分嵌入式系统 | 最广泛使用和测试,有内置调试器 | 英特尔文档、亚马逊搜索等 |
| M32R | 2003年 | 瑞萨科技设计 | 实现完整MMU | 消费电子、发动机控制等 | 支持近12个平台 | http://www.linux - m32r.org |
| MIPS | - | MIPS Technologies授权,多家厂商制造 | 多种指令集实现 | 工作站、游戏机、消费电子等 | 支持有限,部分发行版和厂商支持 | http://www.linux - mips.org等 |
| Motorola 68000(m68k) | - | 摩托罗拉等 | - | 主流系统、工作站、嵌入式系统 | 支持多种系统,软件支持滞后 | http://www.linux - m68k.org等 |
| PowerPC | - | 苹果、IBM、摩托罗拉合作成果 | - | 苹果Mac、工作站、嵌入式系统 | 支持好,应用丰富 | - |
常见架构选择流程图
graph LR
A[嵌入式系统需求分析] --> B{成本敏感?}
B -- 是 --> C{对性能要求高?}
C -- 否 --> D[考虑无MMU架构或AVR32]
C -- 是 --> E{对功耗要求高?}
E -- 是 --> F[考虑ARM]
E -- 否 --> G{需要大量软件资源?}
G -- 是 --> H[考虑Intel x86]
G -- 否 --> I{有特定功能需求?}
I -- 是 --> J[根据功能选M32R、MIPS等]
I -- 否 --> K[综合评估选合适架构]
B -- 否 --> L{对兼容性要求高?}
L -- 是 --> H
L -- 否 --> M{对实时性要求高?}
M -- 是 --> N[考虑PowerPC等]
M -- 否 --> K
9. Super - H架构(补充)
- 架构背景 :Super - H架构是由日立公司(现瑞萨电子)开发的32位RISC处理器架构。它具有高性能、低功耗的特点,在嵌入式系统领域有着广泛的应用。Super - H架构提供了丰富的外设接口和指令集,能够满足不同应用场景的需求。
- 应用领域 :主要应用于汽车电子、工业控制、消费电子等领域。例如,在汽车电子中,可用于发动机控制单元、车身电子系统等;在工业控制中,可用于机器人控制、自动化生产线等。
- Linux支持情况 :Linux对Super - H架构提供了一定的支持,能够运行在基于Super - H处理器的开发板上。不过,相较于ARM、Intel x86等架构,其支持的设备种类和软件资源相对较少。开发者可以通过相关的社区论坛和官方文档获取更多关于Super - H架构Linux移植和开发的信息。
10. 各架构性能对比分析
- 计算性能 :在计算密集型任务中,Intel x86架构凭借其强大的处理能力和丰富的指令集,通常表现出色。PowerPC架构在一些专业应用场景下,如服务器和高端嵌入式系统,也能提供较高的计算性能。ARM架构则在移动设备和低功耗应用中,通过优化的指令集和多核设计,实现了较好的计算性能与功耗平衡。
- 功耗表现 :ARM架构以其低功耗特性在移动设备市场占据主导地位。AVR32架构在设计时也考虑了功耗优化,适用于对功耗敏感的嵌入式应用。而Intel x86架构由于其传统的设计和较高的性能需求,功耗相对较高,但随着技术的发展,其低功耗版本也逐渐增多。
- 内存管理 :具备完整MMU的架构,如ARM、Intel x86、PowerPC等,能够更好地支持虚拟内存管理,提高系统的稳定性和多任务处理能力。而无MMU的架构,如基于uClinux的系统,需要采用特殊的内存管理方式,适用于对成本和资源要求较低的应用。
各架构性能对比表格
| 架构名称 | 计算性能 | 功耗表现 | 内存管理 |
|---|---|---|---|
| ARM | 移动设备和低功耗应用中表现良好,多核设计提升性能 | 低功耗,适合移动设备 | 支持完整MMU,虚拟内存管理能力强 |
| AVR32 | 中等计算能力,代码密度和整体性能较好 | 低功耗,优化设计 | 支持基本内存管理 |
| Intel x86 | 计算密集型任务中表现出色 | 传统版本功耗较高,低功耗版本逐渐增多 | 支持完整MMU,虚拟内存管理成熟 |
| M32R | 满足一般嵌入式应用计算需求 | 功耗适中 | 实现完整MMU,支持标准Linux内存管理 |
| MIPS | 不同实现版本性能差异较大 | 功耗因具体产品而异 | 部分实现支持MMU,内存管理能力不同 |
| Motorola 68000(m68k) | 计算能力相对较弱 | 功耗情况因具体型号而异 | 部分版本支持MMU |
| PowerPC | 专业应用场景中计算性能高 | 功耗因应用场景而异 | 支持完整MMU,虚拟内存管理灵活 |
11. 架构选择的关键因素
- 成本因素 :对于成本敏感的项目,无MMU的架构或一些低成本的嵌入式处理器(如AVR32)可能是更好的选择。而对于对性能和功能要求较高的项目,可能需要选择相对成本较高但性能更强大的架构,如Intel x86或PowerPC。
- 性能需求 :根据应用场景的不同,对计算性能、图形处理能力、实时性等方面的要求也不同。例如,游戏开发、视频处理等应用需要较高的计算和图形处理性能,可选择Intel x86或PowerPC架构;而工业控制、传感器数据采集等对实时性要求较高的应用,可能更适合PowerPC或ARM架构。
- 软件资源 :丰富的软件资源可以降低开发难度和成本。Intel x86架构拥有庞大的软件生态系统,大多数桌面和服务器应用都可以在该架构上运行。ARM架构由于其广泛的应用,也有大量的开源软件和开发工具可供使用。而一些小众架构的软件资源相对较少,开发难度可能会增加。
- 兼容性和扩展性 :在选择架构时,需要考虑与现有系统和设备的兼容性,以及未来的扩展性。例如,如果项目需要与现有的PC系统进行集成,Intel x86架构可能是更好的选择;如果需要支持多种外设和接口,ARM架构的灵活性和扩展性可能更适合。
架构选择关键因素决策树
graph LR
A[项目需求分析] --> B{成本预算}
B -- 高 --> C{性能要求}
C -- 高 --> D[Intel x86或PowerPC]
C -- 中 --> E{软件资源需求}
E -- 多 --> D
E -- 少 --> F[ARM或其他合适架构]
B -- 低 --> G{性能要求}
G -- 低 --> H[无MMU架构或AVR32]
G -- 中 --> I{实时性要求}
I -- 高 --> J[PowerPC或ARM]
I -- 低 --> F
12. 未来架构发展趋势
- 多核化与并行计算 :随着应用对性能的要求不断提高,多核处理器将成为主流。各架构都在不断发展多核技术,以提高计算性能和并行处理能力。例如,ARM架构已经推出了多核处理器,并在移动设备和嵌入式系统中得到广泛应用。
- 低功耗与节能设计 :在能源日益紧张的今天,低功耗和节能设计将是未来架构发展的重要方向。各架构将继续优化功耗管理,采用新的工艺和技术,降低处理器的功耗。例如,Intel x86架构也在不断推出低功耗版本,以满足移动设备和物联网应用的需求。
- 人工智能与机器学习支持 :人工智能和机器学习的快速发展,对处理器的计算能力和算法支持提出了更高的要求。未来的架构将更加注重对人工智能和机器学习算法的优化,提供专门的硬件加速单元。例如,一些ARM处理器已经集成了神经网络处理单元(NPU),以提高人工智能应用的性能。
- 物联网与边缘计算 :物联网的发展将带来大量的边缘设备,这些设备对处理器的成本、功耗和性能有不同的要求。未来的架构将更加适应物联网和边缘计算的需求,提供多样化的解决方案。例如,一些低功耗、低成本的ARM和AVR32架构将在物联网设备中得到更广泛的应用。
未来架构发展趋势总结列表
- 多核化与并行计算成为主流,提高计算性能和并行处理能力。
- 低功耗与节能设计是关键,采用新工艺和技术降低功耗。
- 加强对人工智能和机器学习算法的支持,提供硬件加速单元。
- 适应物联网和边缘计算需求,提供多样化解决方案。
综上所述,在选择嵌入式Linux系统的处理器架构时,需要综合考虑各架构的特点、性能、成本、软件资源等因素,并结合未来的发展趋势进行决策。只有选择合适的架构,才能确保项目的成功实施和系统的长期稳定运行。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)