《ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展》[英]乔恩・马什(Jon Marsh) | PDF下载|ePub下载
ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展 版权信息
- 出版社:机械工业出版社
- 出版时间:2023-12-01
- ISBN:9787111738718
- 条形码:9787111738718 ; 978-7-111-73871-8
ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展 本书特色
本书是学习Arm Helium MVE技术的理想指南。Helium为微控制器带来了令人兴奋的新功能,使复杂的数字信号处理或机器学习应用程序能够在廉价、低功耗的设备上运行。本书首先从易于理解的层面介绍了Helium的基本概念,包括单指令多数据(SIMD)、矢量处理、浮点和定点数据表示以及饱和运算等。然后,将指令集分解为几个部分进行详细探讨,包括流水线结构、预测和分支处理、数据处理及内存访问等主题。此外,还介绍了Cortex-M55等Helium核心技术的编码机制,包括编译、调试和优化。本书的结尾是重要部分,介绍了如何实现DSP和ML工作负载。
阅读本书的前提是具备Cortex-M处理器和基本DSP理论知识以及C语言和Arm汇编语言基础。
ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展 内容简介
本书首先介绍了Helium的基本概念,包括单指令多数据(SIMD)、矢量处理、浮点和定点数据表示以及饱和运算等。然后,将指令集分解为几部分进行详细探讨,包括流水线结构、预测和分支处理、数据处理及内存访问等。此外,还介绍了Cortex-M55等Helium核心技术的编码机制,包括编译、调试和优化。zui后,介绍了如何实现DSP和ML工作负载。
ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展 目录
目 录
译者序
序
前言
第1章 绪论 / 1
1.1 Helium简介 / 2
1.2 Armv8.1-M架构 / 3
1.3 对比其他Arm SIMD/DSP
特性 / 6
1.3.1 Helium对比Neon / 7
1.3.2 Helium对比可伸缩矢量
扩展 / 8
1.3.3 Helium对比Cortex-M的
DSP特性 / 9
1.3.4 Helium对比专用DSP / 9
1.4 Helium用例 / 10
1.5 问题 / 10
第2章 SIMD/矢量处理器概论 / 11
2.1 SIMD/矢量处理 / 11
2.2 浮点数和定点数 / 12
2.2.1 饱和运算 / 15
2.2.2 定点和浮点DSP / 15
2.2.3 Helium浮点格式 / 16
2.2.4 C数据类型和原语 / 16
2.3 问题 / 17
第3章 Helium架构 / 18
3.1 Helium基础概念 / 18
3.1.1 Helium寄存器 / 20
3.1.2 通道 / 21
3.1.3 矢令块和节拍 / 22
3.1.4 指令示例 / 23
3.2 Helium矢量处理 / 24
3.3 低开销分支扩展 / 25
3.4 尾部预测 / 27
3.5 Helium指令集 / 29
3.5.1 指令集基础 / 29
3.5.2 指令修饰符 / 31
3.5.3 指令形态 / 32
3.6 问题 / 33
第4章 数据处理指令 / 34
4.1 算术运算 / 34
4.1.1 加法和减法 / 34
4.1.2 绝对值 / 38
4.1.3 移位 / 40
4.1.4 逻辑操作 / 46
4.1.5 *小值和*大值 / 47
4.1.6 格式转换和舍入 / 50
4.1.7 位计数 / 52
4.1.8 元素反转 / 53
4.2 乘法运算 / 54
4.2.1 乘法指令 / 54
4.2.2 乘加指令 / 57
4.2.3 复数运算指令 / 65
4.2.4 定点复数乘法运算 / 68
4.3 数据移动 / 68
4.4 比较和预测 / 73
4.5 问题 / 79
第5章 内存访问指令 / 80
5.1 矢量加载和存储 / 80
5.2 离散-聚合 / 81
5.3 交织和解交织加载/存储 / 87
5.4 问题 / 90
第6章 Helium分支、标量和其他指令 / 91
6.1 低开销分支扩展 / 91
6.2 Armv8.1-M标量指令 / 94
6.2.1 条件执行 / 94
6.2.2 通用寄存器移位 / 97
6.3 其他指令 / 100
6.4 问题 / 101
第7章 Helium编程 / 102
7.1 编译器和工具 / 102
7.1.1 Arm Compiler 6 / 103
7.1.2 GCC Helium功能 / 104
7.1.3 Helium CPU内核的调试、
跟踪、剖析 / 104
7.2 Helium编程方式 / 105
7.3 矢量库 / 105
7.4 自动矢量化 / 106
7.4.1 使用矢量化编译器 / 107
7.4.2 面向自动矢量化编程 / 109
7.4.3 自动矢量化示例 / 111
7.5 Helium原语函数 / 112
7.5.1 原语编程 / 113
7.5.2 原语预测 / 115
7.5.3 原语点积示例 / 117
7.5.4 原语离散-聚合示例 / 120
7.5.5 原语尾部处理 / 121
7.5.6 原语函数工作流 / 122
7.6 Helium汇编代码 / 123
7.6.1 内联汇编代码 / 123
7.6.2 内联汇编示例 / 125
7.6.3 原生汇编语言函数 / 127
7.7 从其他架构移植DSP
代码 / 127
7.8 Helium底层代码 / 128
7.8.1 使能Helium / 128
7.8.2 检测Helium / 129
7.8.3 异常处理 / 129
7.9 问题 / 132
第8章 性能和优化 / 133
8.1 代码剖析和性能评估 / 133
8.1.1 Helium性能计数器和
比率 / 134
8.1.2 嵌入式跟踪宏单元 / 140
8.2 性能考量 / 141
8.3 性能和Cortex-M内存系统 / 141
8.3.1 缓存 / 142
8.3.2 紧耦合内存 / 143
8.4 双矢令块微架构的性能考量 / 144
8.5 性能示例 / 145
8.6 问题 / 148
第9章 DSP基础 / 149
9.1 矩阵运算 / 149
9.1.1 矩阵乘法 / 149
9.1.2 矩阵转置 / 151
9.2 傅里叶变换 / 153
9.2.1 傅里叶变换简介 / 153
9.2.2 快速傅里叶变换 / 153
9.2.3 FFT示例 / 155
第10章 DSP滤波 / 157
10.1 卷积 / 157
10.2 滤波器 / 158
10.2.1 FIR滤波器简介 / 158
10.2.2 FIR滤波器示例 / 159
第11章 应用示例 / 161
11.1 图像处理 / 161
11.2 加密 / 165
11.2.1 大数算术 / 165
11.2.2 多项式乘法 / 167
第12章 神经网络和机器学习 / 175
12.1 神经网络简介 / 176
12.1.1 卷积神经网络 / 177
12.1.2 循环神经网络 / 178
12.2 CMSIS-NN / 179
12.2.1 CMSIS-NN优化 / 180
12.2.2 CMSIS-NN Helium优化 / 181
12.3 微控制器TensorFlow Lite / 182
12.3.1 用于微控制器和CMSIS-NN
的TensorFlow Lite / 183
12.3.2 模型转换 / 183
12.3.3 在Helium Cortex-M CPU
上部署模型 / 184
12.3.4 关键字检测示例 / 184
12.4 针对Helium转换神经网络 / 186
12.5 经典机器学习 / 189
参考答案 / 191
扩展阅读 / 193
译者序
序
前言
第1章 绪论 / 1
1.1 Helium简介 / 2
1.2 Armv8.1-M架构 / 3
1.3 对比其他Arm SIMD/DSP
特性 / 6
1.3.1 Helium对比Neon / 7
1.3.2 Helium对比可伸缩矢量
扩展 / 8
1.3.3 Helium对比Cortex-M的
DSP特性 / 9
1.3.4 Helium对比专用DSP / 9
1.4 Helium用例 / 10
1.5 问题 / 10
第2章 SIMD/矢量处理器概论 / 11
2.1 SIMD/矢量处理 / 11
2.2 浮点数和定点数 / 12
2.2.1 饱和运算 / 15
2.2.2 定点和浮点DSP / 15
2.2.3 Helium浮点格式 / 16
2.2.4 C数据类型和原语 / 16
2.3 问题 / 17
第3章 Helium架构 / 18
3.1 Helium基础概念 / 18
3.1.1 Helium寄存器 / 20
3.1.2 通道 / 21
3.1.3 矢令块和节拍 / 22
3.1.4 指令示例 / 23
3.2 Helium矢量处理 / 24
3.3 低开销分支扩展 / 25
3.4 尾部预测 / 27
3.5 Helium指令集 / 29
3.5.1 指令集基础 / 29
3.5.2 指令修饰符 / 31
3.5.3 指令形态 / 32
3.6 问题 / 33
第4章 数据处理指令 / 34
4.1 算术运算 / 34
4.1.1 加法和减法 / 34
4.1.2 绝对值 / 38
4.1.3 移位 / 40
4.1.4 逻辑操作 / 46
4.1.5 *小值和*大值 / 47
4.1.6 格式转换和舍入 / 50
4.1.7 位计数 / 52
4.1.8 元素反转 / 53
4.2 乘法运算 / 54
4.2.1 乘法指令 / 54
4.2.2 乘加指令 / 57
4.2.3 复数运算指令 / 65
4.2.4 定点复数乘法运算 / 68
4.3 数据移动 / 68
4.4 比较和预测 / 73
4.5 问题 / 79
第5章 内存访问指令 / 80
5.1 矢量加载和存储 / 80
5.2 离散-聚合 / 81
5.3 交织和解交织加载/存储 / 87
5.4 问题 / 90
第6章 Helium分支、标量和其他指令 / 91
6.1 低开销分支扩展 / 91
6.2 Armv8.1-M标量指令 / 94
6.2.1 条件执行 / 94
6.2.2 通用寄存器移位 / 97
6.3 其他指令 / 100
6.4 问题 / 101
第7章 Helium编程 / 102
7.1 编译器和工具 / 102
7.1.1 Arm Compiler 6 / 103
7.1.2 GCC Helium功能 / 104
7.1.3 Helium CPU内核的调试、
跟踪、剖析 / 104
7.2 Helium编程方式 / 105
7.3 矢量库 / 105
7.4 自动矢量化 / 106
7.4.1 使用矢量化编译器 / 107
7.4.2 面向自动矢量化编程 / 109
7.4.3 自动矢量化示例 / 111
7.5 Helium原语函数 / 112
7.5.1 原语编程 / 113
7.5.2 原语预测 / 115
7.5.3 原语点积示例 / 117
7.5.4 原语离散-聚合示例 / 120
7.5.5 原语尾部处理 / 121
7.5.6 原语函数工作流 / 122
7.6 Helium汇编代码 / 123
7.6.1 内联汇编代码 / 123
7.6.2 内联汇编示例 / 125
7.6.3 原生汇编语言函数 / 127
7.7 从其他架构移植DSP
代码 / 127
7.8 Helium底层代码 / 128
7.8.1 使能Helium / 128
7.8.2 检测Helium / 129
7.8.3 异常处理 / 129
7.9 问题 / 132
第8章 性能和优化 / 133
8.1 代码剖析和性能评估 / 133
8.1.1 Helium性能计数器和
比率 / 134
8.1.2 嵌入式跟踪宏单元 / 140
8.2 性能考量 / 141
8.3 性能和Cortex-M内存系统 / 141
8.3.1 缓存 / 142
8.3.2 紧耦合内存 / 143
8.4 双矢令块微架构的性能考量 / 144
8.5 性能示例 / 145
8.6 问题 / 148
第9章 DSP基础 / 149
9.1 矩阵运算 / 149
9.1.1 矩阵乘法 / 149
9.1.2 矩阵转置 / 151
9.2 傅里叶变换 / 153
9.2.1 傅里叶变换简介 / 153
9.2.2 快速傅里叶变换 / 153
9.2.3 FFT示例 / 155
第10章 DSP滤波 / 157
10.1 卷积 / 157
10.2 滤波器 / 158
10.2.1 FIR滤波器简介 / 158
10.2.2 FIR滤波器示例 / 159
第11章 应用示例 / 161
11.1 图像处理 / 161
11.2 加密 / 165
11.2.1 大数算术 / 165
11.2.2 多项式乘法 / 167
第12章 神经网络和机器学习 / 175
12.1 神经网络简介 / 176
12.1.1 卷积神经网络 / 177
12.1.2 循环神经网络 / 178
12.2 CMSIS-NN / 179
12.2.1 CMSIS-NN优化 / 180
12.2.2 CMSIS-NN Helium优化 / 181
12.3 微控制器TensorFlow Lite / 182
12.3.1 用于微控制器和CMSIS-NN
的TensorFlow Lite / 183
12.3.2 模型转换 / 183
12.3.3 在Helium Cortex-M CPU
上部署模型 / 184
12.3.4 关键字检测示例 / 184
12.4 针对Helium转换神经网络 / 186
12.5 经典机器学习 / 189
参考答案 / 191
扩展阅读 / 193
ARM HELIUM技术指南:CORTEX-M系列处理器的矢量运算扩展 作者简介
乔恩・马什(Jon Marsh),拥有超过25年的从业经验,一直为Arm及其半导体合作伙伴工作。他曾参与多款Arm CPU的开发,从Arm2到现在的高端64位处理器都有涉及。他曾在世界大多数顶级半导体和消费类公司从事有关Arm处理器的咨询工作并提供培训课程,并在亚洲、欧洲及北美等地区的会议和大学发表演讲。