《ARM 嵌入式系统编程与优化》之 Linux/ARM 嵌入式平台
Posted tuhooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《ARM 嵌入式系统编程与优化》之 Linux/ARM 嵌入式平台相关的知识,希望对你有一定的参考价值。
Linux/ARM 嵌入式平台是《ARM 嵌入式系统编程与优化》的第一章。
好好学学硬件,然后深入一下 Linux,修炼好自己的内功。
ARM 处理器不是独立芯片产品,而是具有多样性和异质性嵌入式片上系统(SOC)的集成部件,是可以针对各种特定产品实现定制化的部件。
除了处理器内核外,典型的片上系统还包含:
- 一系列不同的存储接口(例如同步动态随机存储器、闪存等)
- 通信接口(USB、蓝牙、WiFi 等)
- 图形、视频专用处理器(例如图形处理单元,GPU)
ARM 处理器包含了片上系统的“计算”部分。
Linux 大大促进了不同嵌入式平台间的代码开发和代码重用,成为了一个标准的嵌入式操作系统。
程序员必须编写低抽象水平的代码,只有这样,程序才能知道是底层处理器技术。这通常被称为性能优化或代码优化,在高性能计算领域是很常见的。
本书将用到几个应用程序的例子,其中包括:
- 图像变换
- 分形生成
- 图像卷积
- 以及一些计算机视觉任务
解释 ARM 和 RISC 的字面含义?
ARM 代表“高级精简指令集机器”,RISC 代表“精简指令集计算机”。
RISC 的优势是什么?
RISC 是一门设计哲学,它将处理器原生语言或者说指令集设计成极简指令表,这就要求处理器通过执行大量简单指令来执行一个程序。
这种方法的优势是:相对于处理器具有独立的指令来执行更多工作,既是一个程序需要执行 N 次更简单指令,简单指令的执行速度也比复杂指令平均快 N 倍,并提供了更好的整体性能。
RISC 的指令类型有哪些?
RISC 指令一般严格分为三种主要类型:
- 算术运算指令:执行任何实际数据计算的唯一指令类型
- 存储指令
- 控制指令
存储指令和控制指令需要必要开销来实现与外部存储器交换数据以及实现有数据依赖的行为。
存储器指令和控制指令平均会比算术运算指令花更多的时间。
虽然取决于程序的存储访问模式和处理器存储层次结构的性能,但是,特别的是存储指令,算术运算指令的执行速度一般比它快 10~20 倍。
ARM 编程
可以用各种高级语言编写 ARM 处理器。
一些 ARM 处理器本身还可以执行 Java 字节码。
如果讲究代码性能,一般采用 C 语言编程。
ARM 体系架构
ARM 通用寄存器
状态寄存器
内存寻址模式
GNU ARM 汇编
性能受影响的因素,包括:
- 执行的指令数
- 数据依赖和分支预测失误导致的延迟
- 防止多个问题的数据依赖和资源约束
- 缓存失效导致的延迟
包括缓存失效率在内的所有这些因素是可以改变的——通过修改算法的汇编代码来改善性能。
代码优化目标
减少执行指令数
降低平均 CPI
性能界限
受计算限制的,意味着性能受到可以被分派到处理器的内部功能单元的操作数量限制;存储器界限,意味着性能受到存储器带宽限制。
基本指令集
- 整型算术指令
- 按位逻辑指令
- 移位指令
- 移动指令
- 加载和存储指令
- 比较指令
- 分支指令
- 浮点指令
以上是关于《ARM 嵌入式系统编程与优化》之 Linux/ARM 嵌入式平台的主要内容,如果未能解决你的问题,请参考以下文章