![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基于ARM平台的高效嵌入式软件开发
hbffff
音视频编解码器专家,流媒体专家,架构师。曾经开发出ARMv7上世界最快的h.264解码器;微博送礼服务-礼小二创始人;爱奇艺资深视频架构师;约赛科技移动开发总监;哇才信息CTO,联合创始人;合合信息大数据研发总监
展开
-
原理篇-CPU
要点:选择最合适的指令,调整指令布局使其符合流水线处理,尽可能地去除分支以及提高Data Cache的数据读写效率,减少因数据读写带来的流水线停顿,这些都是提高CPU使用性能的关键。 讨论:现代CPU是多级流水线的超标量结构,每个时钟周期可以执行多个操作。CPU可以分为两个部分,一部分是指令控制单元(ICU),另一部分是执行单元(EU)。ICU的取指单元从Instruct原创 2008-08-07 00:43:00 · 736 阅读 · 0 评论 -
原理篇-算法
要点:算法对于软件的性能是有决定性影响的。算法实现的优化就是要充分应用硬件和操作系统的特性,设计合理的数据结构,使得各个模块具有高度的局部性,模块间具有最低的耦合性和最高的并行性。讨论: 算法优化可以分为算法的科学级优化和技术级优化。科学级的优化如快速排序算法,FFT算法,对该问题域都起了革命性的影响。技术级优化是我们普通工程师的主要工作,如对冒泡算法的实现做优化,可原创 2008-08-07 00:45:00 · 680 阅读 · 0 评论 -
基于ARM平台的高效嵌入式软件开发--前言
前言 扎在嵌入式多媒体领域6年时间,方方面面的工作都涉猎过。一直有把过去所学总结成文的想法。侯捷老师说过发表是最好的记忆,我觉得很对。总结与思考才能将技术内化为自己的思原创 2008-08-07 00:30:00 · 862 阅读 · 0 评论 -
原理篇-内存
要点:对优化工作来说,内存是最重要的资源。计算机的存储体系是个多级缓存体系。理解并应用缓存是全局算法设计实现和局部代码优化调整的基础。讨论:有人说程序优化就是内存的优化,可见内存在优化中的地位。现代计算机的存储体系是个多级缓存体系,离CPU越近,速度越快,容量越小。寄存器是L1 Cache的缓存,L1 Cache是L2 Cache的缓存,L2 Cache是RAM缓存,RAM是更外原创 2008-08-07 00:42:00 · 629 阅读 · 0 评论 -
原理篇-局部性与并行性
概要:局部性原理是计算机系统最重要的理论。也是软件优化的最重要的基础。而系统的并行性,则保证了系统资源的充分使用。最理想的,最高效的软件就是系统的各个部件(CPU,内存,I/O设备等)都充分运转,而彼此间的耦合程度又最低,在合理的算法调度下,相关的软硬件资源都能像流水线一样运作,从而最快最好的完成计算。描述:要理解软件优化,首先对软件要有个本质的认识。软件是什么呢?它是一组在计算机平原创 2008-08-07 00:38:00 · 1761 阅读 · 0 评论 -
架构篇-全局的设计考虑
要点: 架构师首先应该从用户的角度看软件的performance(表现)。在架构设计上,接口应该足够灵活,对软件的performance(性能)参数能够动态调整,以期达到一定自适应的效果。同时总体的架构设计应该考虑到移植性。讨论:优化绝对不是为了技术优化而优化。架构师首先要清楚软件所要达到的用户期望目标。这里以一个OMAP850(200MHZ ARM926EJ CPU)上的原创 2008-08-07 00:47:00 · 862 阅读 · 0 评论 -
架构篇-准备工作
要点: 工欲善其事,必先利其器。在优化前必须做好一些准备工作,尤其是工具的准备。包括测试集(test suite),日志(log),性能评估工具(profiler),源码阅读工具,版本控制工具等。讨论: 在开始优化前,必须准备好工具。这不仅能提高工作效率,而且是保证优化朝着正确方向前进的必要条件。1, 测试集(test suite)测试集包括测试原创 2008-08-07 00:51:00 · 775 阅读 · 0 评论 -
模块篇-数据结构
要点: 理清数据流和控制流,确定模块的瓶颈,选择更优的算法,设计局部性和并行性友好的数据结构.讨论: 这里谈到的模块是系统中相对独立的一个模块,如Player中的视频解码器.对模块的全局思考与架构的全局思考类似,都是先要理清数据流和控制流,确定性能瓶颈,以局部性与并行性为基本的优化指导原则.所不同的是架构级的全局思考主要集中在模块间的高效协作,合理分配资源,使得系统总体的perfora原创 2008-08-24 22:34:00 · 1136 阅读 · 0 评论 -
原理篇-多线程
要点:多线程是一项重要的技术。理解线程的调度机制,线程切换的代价,以及多线程的同步,才能设计出高效的多线程应用。讨论:线程就其本质是一个CPU的时间片。定时器产生一个中断,这个中断将CPU的控制权转移到OS的线程调度程序,OS根据调度规则将线程队列里的最合适线程调出,恢复该线程的上下文(context),也就是该线程上次被切换前的寄存器。中断结束,该线程就开始运行,直到下次中断,OS开始另一次调度原创 2008-08-24 22:42:00 · 1514 阅读 · 0 评论