课程介绍:
本课程重点关注ARM32/64位应用处理器的指令集、工作模式切换、操作系统异常向量、系统调用的实现原理,以及内存管理mmu、原子操作、内存屏障、多核cache同步的正确使用和编程方法,会对ARM32/64的差异和共同点进行分析对比;课程也同时会对M系列MCU架构和指令集进行介绍。课程的最后会讲解top-down性能分析法,如何通过perf的剖析数据寻找代码微架构相关的性能瓶颈。
本课程语言通俗,讲师授课风格生动趣味性强,全程“说人话”不死板,力求以生活化地表达,带领学员理解掌握复杂的技术原理与使用技巧。
培训对象:
在ARM32/64、M系列硬件上,无OS、实时操作系统和Linux平台上的软件开发人员,打好最底层的基础。最后的top-down分析环节仅针对Linux开发者。
相关硬件工程师也可通过参加本课程,理解软件的诉求,以便更好与软件工程师交流。
课程形式:
课程讲授和学员动手实验并重,课程会设置约20个上机实验。
通过讲解和讨论来学习概念、方法和原理。为加深和促进了解,学员要单独或分组完成课堂练习。
课程大纲
第一章 ARM处理器
1、RISC与CISC
2、冯诺依曼与哈弗架构
3、ARM处理器历史(时间线)
4、ARM处理器分类
5、ARM处理器MMU
第二章 ARM指令集(主要针对Cortex-A系列)
1、ARM32/ARM64处理器寄存器
2、ARM32/ARM64处理器不同模式
3、ARM32/64内存操作指令
4、ARM32/64协处理器操作指令
5、ARM32/64运算型指令
6、ARM32/64互斥等指令
7、ARM32/64指令集对比差异
8、ARM64 RET和ERET指令
9、ARM64 CSEL指令
第三章 ARM处理器模式切换
1、ARM32异常处理与vector表
2、ARM64的EL0, EL1, EL2, EL3模式切换
3、ARM 64位处理器的向量表
4、中断控制,多核下中断
5、trustzone
6、虚拟化扩展
7、ARM v8 vs. ARM v9架构
第四章 ARM/ARM64 ABI以及usr到svc的系统调用
1、ARM ABI,C和汇编互调
2、系统调用过程
3、Linux下汇编书写的应用程序
4、裸机下实现的swi例子
5、ARM64 ABI、系统调用
第五章 内存、cache和流水线
1、读—修改—写和M系列的bit-band技术
2、原子操作的底层支持: swap指令
3、原子操作的底层支持:ldrex/strex指令
4、原子操作的底层支持:ldxr、stxr
5、dmb, dsb, isb内存屏障
6、多核下cache同步和cache伪共享
第六章 向量运算NEON, SVE, SVE2
1、NEON的工作方法
2、ARM NEON Intrinsics 3. NEON编程案例
3、ARMv8的SVE
4、ARMv9的SVE2
第七章 Cortex-M系列
1、Cortex-M处理器的运行模式
2、Cortex-M的向量表
3、Cortex-M的复位过程
4、Cortex-M的向量中断
5、Cortex-M的中断处理过程
第八章 基于top-down的微架构性能分析
1、frontend/backend
2、基于top-down的性能剖析
主讲专家:
宋老师:知名嵌入式系统专家,《Linux设备驱动开发详解》作者,曾为思科、阿尔卡特、朗讯、四方、意法半导体、富士施乐、代傲电子、飞利浦、南瑞、宝信、美国国家仪器、ABB、中国建设银行等知名企业提供嵌入式Linux企业培训和技术服务,受到企业广泛好评。活跃于 Linux社区,Linux内核SCHED CLUSTER、per-numaCMA、ARM64BATCHED UNMAP TLB FLUSH、多个mTHP关键feature的作者,累计给Linux主线贡献400+个补丁。已给Linux官方内核贡献了逾3万行代码,是给Linux官方内核贡献代码最多的华人之一。

