Chap2 Embedded Processors¶
Classification of embedded processors¶
嵌入式处理器
- 嵌入式微处理器(Embedded Microprocessor Unit, EMPU)
- 与通用计算机中的 CPU 不同,只保留和嵌入式应用相关的功能
- 如 Inter 系列、PowerPC 系列、ARM 系列(Broadcom, Qualcomn, STM 等)
- 嵌入式微控制器(Microcontroller Unit, MCU)
- 内部集成 ROM、RAM、总线、定时 / 计数器、WatchDog、I/O、串口、PWM、A/D、D/A、Flash 等
- 单片化,体积大大减小,从而使功耗和成本下降、可靠性提高
- 相对低端的 MCU 又称单片机
- 如 Inter8051、MicroChip 的 PIC 系列、ATMEL 的 AVR ATMEGA 系列
- 应用在涡喷发动机的 ECU 等
- 嵌入式 DSP 处理器(Embedded Digital Signal Processor, EDSP)
- 专门用于处理数字信号的处理器
- 内部集成多种数字信号处理的算法和硬件加速器
- 如 TI 的 TMS320、Motorola 的 DSP56000 系列
- 嵌入式片上系统(System On Chip, SoC)
- 分为通用和专用两类
- 通用系列如 Infineon 的 TriCore、Motorola 的 M-core
- 专用系列如 Philips 的 Smart XA
示例
- Arduino 的 MCU:ATMEGA328 是一款 8 位 MCU,常用于 Arduino Uno 等开发板
- Raspberry 的 MPU:BCM2837 和 BCM2711 是 Raspberry Pi 的处理器,都是 ARM 架构的 MPU
- Pixhawk 的 MCU:STM32F427 和 STM32F765 是 Pixhawk 飞行控制器使用的 MCU,具有强大的处理和控制能力
嵌入式处理器技术指标:功能、字长、工作温度、功耗、寻址能力、电磁兼容性、平均故障间隔时间 MTBF 等
处理速度指标 : 主频 (Clock Speed)、CPI(Clock Cycles per Instruction)、MIPS(Million Instructions Per Second)、FLOPS(Floating-Point Instructions per Second)
Instrucition Set Architecture¶
指令架构
- ISA(Instruction Set Architecture):指令架构
- RISC(Reduced Instruction Set Computer):精简指令集计算机,如 ARM
- CISC(Complex Instruction Set Computer):复杂指令集计算机,如 Intel/AMD 的 X86
RISC 指令集的特点
- 选取使用频率高、有用且不复杂的简单指令;指令长度固定,指令格式
- 指令长度固定,指令格式种类少,寻址方式种类少
- 只有 load/store 指令会访问内存,其余指令执行都在寄存器之间进行,即限制内存访问
- CPU 中通用寄存器数量相当多
- 大部分指令在一个机器周期内完成
- 采用流水线组织
- 以硬布线控制逻辑为主,不用或少用微程序控制
- 重视编译工作,以简单有效的方式支持高级语言,减少程序运行时间
ARM 架构
- ARM 架构发展到 V9(2021),V8 开始 64 位总线,V9 加入 machine learning 部件
- 基于 ARMV7 结构的处理器,冠上 Cortex 的代号,如基于 V7A 的 Cortex-A,基于 V7R 的 Cortex-R,基于 V7M 的 Cortex-M3(A-Application, M-Microcontroller, R-Real-time)
- 华为 Kirn 9000/Kunpeng 920 采用 V8 指令集,苹果 A15/A16 采用 V9 指令集
- 低功耗、高扩展性、高性能与低功耗平衡、多核支持、生态系统丰富
Processor Architecture¶
处理器架构
- 冯诺依曼架构:程序和数据存储在相同的存储空间,传统架构
- 哈佛架构:程序和数据存储在不同的存储空间,增加存取带宽,提高并行性
一般而言,RISC 指令集处理器常采用哈佛架构,如 ARM 处理器 V9 系列;CISC 指令集处理器常采用冯诺依曼架构,如 X86
Storage Format¶
存储模式
- 大端模式(Big-endian
) :低字节在高地址 - 小端模式(Little-endian
) :低字节在低地址 - Arm 支持大端和小端,缺省情况下是小端
- Inter 是小端模式,PowerPC 是大端模式

判断处理器的存储模式
int main(){
union{
int i;
char c[sizeof(int)];
} x;
x.i = 1;
if (x.c[0] == 1)
printf("小端模式\n");
else
printf("大端模式\n");
return 0;
}
int main(){
int x = 1;
char *c = (char *)&x;
if (*c)
printf("小端模式\n");
else
printf("大端模式\n");
return 0;
}
Instruction-level Parallelism¶
指令集并行
- Pipelining:将指令的执行分解为多个阶段,使得在每个时钟周期中,不同的指令可以同时处于不同的执行阶段
- Superscalar( 超标量 ):超标量处理器有多个执行单元,如整数单元、浮点单元、加载 / 存储单元等,让它们能同时工作
- Subword parallelism( 子字并行 ):将一个宽运算器(ALU)划分为多个较窄的运算单元,从而能够对较短的字长数据同时执行算术或逻辑运算。如 Intel Pentium 的 MMX 技术,让具有 64 位数据处理能力的 CPU 拆分为多个处理 8 位数据的单元,同时工作;是 vector processing 的一种形式
- VLIW(Very Long Instruction Word, 超长指令字 ):依赖于编译器,多个指令并在一起,同时执行相应的操作,比 superscalar 易于预测执行时间
- Multicore( 多核 ):在单块芯片上集成多个处理器的结构,可以是同构(homogenous)或异构(heterogeneous)的
homogenous multicore(同构多核
heterogeneous multicore(异构多核
评论区
如果有什么问题或想法,欢迎大家在下方留言~