新書推薦:
![领导力教练 世界著名企业教练们的实践心得](http://103.6.6.69/upload/mall/productImages/y24/8/9787115645371.jpg)
《
领导力教练 世界著名企业教练们的实践心得
》
售價:HK$
80.3
![没有世界观的世界(第2版)(守望者)](http://103.6.6.66/upload/mall/productImages/24/28/9787300329253.jpg)
《
没有世界观的世界(第2版)(守望者)
》
售價:HK$
113.6
![成为母亲:一场心灵的奇异旅行](http://103.6.6.66/upload/mall/productImages/24/27/9787522913490.jpg)
《
成为母亲:一场心灵的奇异旅行
》
售價:HK$
66.7
![金融赋能:使命驱动的银行和金融的未来](http://103.6.6.69/upload/mall/productImages/y24/7/9787115630803.jpg)
《
金融赋能:使命驱动的银行和金融的未来
》
售價:HK$
68.9
![时刻人文中国梦境:公元前300年公元800年](http://103.6.6.66/upload/mall/productImages/24/26/9787547323762.jpg)
《
时刻人文中国梦境:公元前300年公元800年
》
售價:HK$
89.7
![出去一趟,还是家里舒服](http://103.6.6.69/upload/mall/productImages/y24/8/9787521766288.jpg)
《
出去一趟,还是家里舒服
》
售價:HK$
56.4
![阿根廷史:从昔日辉煌到现代迷思](http://103.6.6.66/upload/mall/productImages/24/26/9787547322512.jpg)
《
阿根廷史:从昔日辉煌到现代迷思
》
售價:HK$
112.7
![神话学理论](http://103.6.6.66/upload/mall/productImages/24/28/9787100222150.jpg)
《
神话学理论
》
售價:HK$
98.9
|
編輯推薦: |
本书是学习Arm Helium MVE技术的理想指南。Helium为微控制器带来了令人兴奋的新功能,使复杂的数字信号处理或机器学习应用程序能够在廉价、低功耗的设备上运行。本书首先从易于理解的层面介绍了Helium的基本概念,包括单指令多数据(SIMD)、矢量处理、浮点和定点数据表示以及饱和运算等。然后,将指令集分解为几个部分进行详细探讨,包括流水线结构、预测和分支处理、数据处理及内存访问等主题。此外,还介绍了Cortex-M55等Helium核心技术的编码机制,包括编译、调试和优化。本书的结尾是重要部分,介绍了如何实现DSP和ML工作负载。阅读本书的前提是具备Cortex-M处理器和基本DSP理论知识以及C语言和Arm汇编语言基础。
|
內容簡介: |
本书首先介绍了Helium的基本概念,包括单指令多数据(SIMD)、矢量处理、浮点和定点数据表示以及饱和运算等。然后,将指令集分解为几部分进行详细探讨,包括流水线结构、预测和分支处理、数据处理及内存访问等。此外,还介绍了Cortex-M55等Helium核心技术的编码机制,包括编译、调试和优化。最后,介绍了如何实现DSP和ML工作负载。
|
關於作者: |
乔恩·马什(Jon Marsh),拥有超过25年的从业经验,一直为Arm及其半导体合作伙伴工作。他曾参与多款Arm CPU的开发,从Arm2到现在的高端64位处理器都有涉及。他曾在世界大多数顶级半导体和消费类公司从事有关Arm处理器的咨询工作并提供培训课程,并在亚洲、欧洲及北美等地区的会议和大学发表演讲。
|
目錄:
|
目 录译者序序前言第1章 绪论 / 11.1 Helium简介 / 21.2 Armv8.1-M架构 / 31.3 对比其他Arm SIMD/DSP 特性 / 61.3.1 Helium对比Neon / 71.3.2 Helium对比可伸缩矢量 扩展 / 81.3.3 Helium对比Cortex-M的 DSP特性 / 91.3.4 Helium对比专用DSP / 91.4 Helium用例 / 101.5 问题 / 10第2章 SIMD/矢量处理器概论 / 112.1 SIMD/矢量处理 / 112.2 浮点数和定点数 / 122.2.1 饱和运算 / 152.2.2 定点和浮点DSP / 152.2.3 Helium浮点格式 / 162.2.4 C数据类型和原语 / 162.3 问题 / 17第3章 Helium架构 / 183.1 Helium基础概念 / 183.1.1 Helium寄存器 / 203.1.2 通道 / 213.1.3 矢令块和节拍 / 223.1.4 指令示例 / 233.2 Helium矢量处理 / 243.3 低开销分支扩展 / 253.4 尾部预测 / 273.5 Helium指令集 / 293.5.1 指令集基础 / 293.5.2 指令修饰符 / 313.5.3 指令形态 / 323.6 问题 / 33第4章 数据处理指令 / 344.1 算术运算 / 344.1.1 加法和减法 / 344.1.2 绝对值 / 384.1.3 移位 / 404.1.4 逻辑操作 / 464.1.5 最小值和最大值 / 474.1.6 格式转换和舍入 / 504.1.7 位计数 / 524.1.8 元素反转 / 534.2 乘法运算 / 544.2.1 乘法指令 / 544.2.2 乘加指令 / 574.2.3 复数运算指令 / 654.2.4 定点复数乘法运算 / 684.3 数据移动 / 684.4 比较和预测 / 734.5 问题 / 79第5章 内存访问指令 / 805.1 矢量加载和存储 / 805.2 离散-聚合 / 815.3 交织和解交织加载/存储 / 875.4 问题 / 90第6章 Helium分支、标量和其他指令 / 916.1 低开销分支扩展 / 916.2 Armv8.1-M标量指令 / 946.2.1 条件执行 / 946.2.2 通用寄存器移位 / 976.3 其他指令 / 1006.4 问题 / 101第7章 Helium编程 / 1027.1 编译器和工具 / 1027.1.1 Arm Compiler 6 / 1037.1.2 GCC Helium功能 / 1047.1.3 Helium CPU内核的调试、 跟踪、剖析 / 1047.2 Helium编程方式 / 1057.3 矢量库 / 1057.4 自动矢量化 / 1067.4.1 使用矢量化编译器 / 1077.4.2 面向自动矢量化编程 / 1097.4.3 自动矢量化示例 / 1117.5 Helium原语函数 / 1127.5.1 原语编程 / 1137.5.2 原语预测 / 1157.5.3 原语点积示例 / 1177.5.4 原语离散-聚合示例 / 1207.5.5 原语尾部处理 / 1217.5.6 原语函数工作流 / 1227.6 Helium汇编代码 / 1237.6.1 内联汇编代码 / 1237.6.2 内联汇编示例 / 1257.6.3 原生汇编语言函数 / 1277.7 从其他架构移植DSP 代码 / 1277.8 Helium底层代码 / 1287.8.1 使能Helium / 1287.8.2 检测Helium / 1297.8.3 异常处理 / 1297.9 问题 / 132第8章 性能和优化 / 1338.1 代码剖析和性能评估 / 1338.1.1 Helium性能计数器和 比率 / 1348.1.2 嵌入式跟踪宏单元 / 1408.2 性能考量 / 1418.3 性能和Cortex-M内存系统 / 1418.3.1 缓存 / 1428.3.2 紧耦合内存 / 1438.4 双矢令块微架构的性能考量 / 1448.5 性能示例 / 1458.6 问题 / 148第9章 DSP基础 / 1499.1 矩阵运算 / 1499.1.1 矩阵乘法 / 1499.1.2 矩阵转置 / 1519.2 傅里叶变换 / 1539.2.1 傅里叶变换简介 / 1539.2.2 快速傅里叶变换 / 1539.2.3 FFT示例 / 155第10章 DSP滤波 / 15710.1 卷积 / 15710.2 滤波器 / 15810.2.1 FIR滤波器简介 / 15810.2.2 FIR滤波器示例 / 159第11章 应用示例 / 16111.1 图像处理 / 16111.2 加密 / 16511.2.1 大数算术 / 16511.2.2 多项式乘法 / 167第12章 神经网络和机器学习 / 17512.1 神经网络简介 / 17612.1.1 卷积神经网络 / 17712.1.2 循环神经网络 / 17812.2 CMSIS-NN / 17912.2.1 CMSIS-NN优化 / 18012.2.2 CMSIS-NN Helium优化 / 18112.3 微控制器TensorFlow Lite / 18212.3.1 用于微控制器和CMSIS-NN 的TensorFlow Lite / 18312.3.2 模型转换 / 18312.3.3 在Helium Cortex-M CPU 上部署模型 / 18412.3.4 关键字检测示例 / 18412.4 针对Helium转换神经网络 / 18612.5 经典机器学习 / 189参考答案 / 191扩展阅读 / 193
|
內容試閱:
|
前 言本书旨在介绍Arm的Helium技术,即针对Arm Cortex-M系列处理器的矢量运算扩展。Helium为微控制器带来了令人兴奋的新功能,允许在低成本、低功耗的设备上运行复杂的数字信号处理或机器学习应用程序。本书旨在为那些想要了解这些新特性的工程师和学生提供帮助。本书不是数字信号处理器(Digital Signal Processor,DSP)编程的入门书籍,阅读本书的前提是对C语言和Arm汇编语言有所了解。排版约定本书遵循如下排版约定。汇编程序代码:VADD Q0, Q0, Q1C程序代码:printf(”Hello World”);寄存器位采用方括号表示,例如Q0[15:0]表示寄存器Q0的第15位到第0位。十六进制数值的前缀为0x(例如,0x10代表十进制的16),二进制数值的前缀为0b(例如,0b101代表十进制的5)。在语法描述中,指令域< >中的内容必须用合适的值代替,{}表示可选内容。C/C++函数(包括Helium原语函数)名称采用小写字母表示。致谢感谢Arm Education Media为我提供了撰写本书的机会,并使本书得以出版。感谢安谋科技教育计划程鸿先生和宋斌先生对本书的支持。许多人都对本书做出了贡献。我要特别感谢来自Arm France的Fabien Klein和Christophe Favergeon,以及来自Arm应用工程团队的Salman Arif和Edmund Player,感谢他们在示例代码、培训材料的获取和问题的诸多建议及答案方面提供帮助。我还要感谢Fran?ois Botman、Sjoerd Meijer和Hanno Becker,感谢他们提供专业的评审意见。没有他们的帮助,本书不可能完成。Jon Marsh2020年9月
|
|