- 博客(12)
- 资源 (6)
- 收藏
- 关注
原创 The essense of the software atchitecture
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Font
2009-07-26 20:55:00 872
原创 原理篇-多线程
要点:多线程是一项重要的技术。理解线程的调度机制,线程切换的代价,以及多线程的同步,才能设计出高效的多线程应用。讨论:线程就其本质是一个CPU的时间片。定时器产生一个中断,这个中断将CPU的控制权转移到OS的线程调度程序,OS根据调度规则将线程队列里的最合适线程调出,恢复该线程的上下文(context),也就是该线程上次被切换前的寄存器。中断结束,该线程就开始运行,直到下次中断,OS开始另一次调度
2008-08-24 22:42:00 1517
原创 模块篇-数据结构
要点: 理清数据流和控制流,确定模块的瓶颈,选择更优的算法,设计局部性和并行性友好的数据结构.讨论: 这里谈到的模块是系统中相对独立的一个模块,如Player中的视频解码器.对模块的全局思考与架构的全局思考类似,都是先要理清数据流和控制流,确定性能瓶颈,以局部性与并行性为基本的优化指导原则.所不同的是架构级的全局思考主要集中在模块间的高效协作,合理分配资源,使得系统总体的perfora
2008-08-24 22:34:00 1140
原创 架构篇-准备工作
要点: 工欲善其事,必先利其器。在优化前必须做好一些准备工作,尤其是工具的准备。包括测试集(test suite),日志(log),性能评估工具(profiler),源码阅读工具,版本控制工具等。讨论: 在开始优化前,必须准备好工具。这不仅能提高工作效率,而且是保证优化朝着正确方向前进的必要条件。1, 测试集(test suite)测试集包括测试
2008-08-07 00:51:00 775
原创 架构篇-全局的设计考虑
要点: 架构师首先应该从用户的角度看软件的performance(表现)。在架构设计上,接口应该足够灵活,对软件的performance(性能)参数能够动态调整,以期达到一定自适应的效果。同时总体的架构设计应该考虑到移植性。讨论:优化绝对不是为了技术优化而优化。架构师首先要清楚软件所要达到的用户期望目标。这里以一个OMAP850(200MHZ ARM926EJ CPU)上的
2008-08-07 00:47:00 864
原创 原理篇-算法
要点:算法对于软件的性能是有决定性影响的。算法实现的优化就是要充分应用硬件和操作系统的特性,设计合理的数据结构,使得各个模块具有高度的局部性,模块间具有最低的耦合性和最高的并行性。讨论: 算法优化可以分为算法的科学级优化和技术级优化。科学级的优化如快速排序算法,FFT算法,对该问题域都起了革命性的影响。技术级优化是我们普通工程师的主要工作,如对冒泡算法的实现做优化,可
2008-08-07 00:45:00 682
原创 原理篇-CPU
要点:选择最合适的指令,调整指令布局使其符合流水线处理,尽可能地去除分支以及提高Data Cache的数据读写效率,减少因数据读写带来的流水线停顿,这些都是提高CPU使用性能的关键。 讨论:现代CPU是多级流水线的超标量结构,每个时钟周期可以执行多个操作。CPU可以分为两个部分,一部分是指令控制单元(ICU),另一部分是执行单元(EU)。ICU的取指单元从Instruct
2008-08-07 00:43:00 737
原创 原理篇-内存
要点:对优化工作来说,内存是最重要的资源。计算机的存储体系是个多级缓存体系。理解并应用缓存是全局算法设计实现和局部代码优化调整的基础。讨论:有人说程序优化就是内存的优化,可见内存在优化中的地位。现代计算机的存储体系是个多级缓存体系,离CPU越近,速度越快,容量越小。寄存器是L1 Cache的缓存,L1 Cache是L2 Cache的缓存,L2 Cache是RAM缓存,RAM是更外
2008-08-07 00:42:00 629
原创 原理篇-局部性与并行性
概要:局部性原理是计算机系统最重要的理论。也是软件优化的最重要的基础。而系统的并行性,则保证了系统资源的充分使用。最理想的,最高效的软件就是系统的各个部件(CPU,内存,I/O设备等)都充分运转,而彼此间的耦合程度又最低,在合理的算法调度下,相关的软硬件资源都能像流水线一样运作,从而最快最好的完成计算。描述:要理解软件优化,首先对软件要有个本质的认识。软件是什么呢?它是一组在计算机平
2008-08-07 00:38:00 1765
原创 基于ARM平台的高效嵌入式软件开发--前言
前言 扎在嵌入式多媒体领域6年时间,方方面面的工作都涉猎过。一直有把过去所学总结成文的想法。侯捷老师说过发表是最好的记忆,我觉得很对。总结与思考才能将技术内化为自己的思
2008-08-07 00:30:00 863
原创 软件优化技术真经-框架篇
软件优化是一项系统工程。总体而言,整个优化框架可以分为两个部分:设计优化和代码优化。1,设计优化 设计优化包括了软件体系结构的优化,数据结构的优化,算法的优化。1.1 软件体系结构的优化软件优化首先要对整个软件体系结构有个清晰的了解。在认识了整个软件的目标功能后,围绕这个目标,软件的模块划分,软件的运行流程都要一清二楚。整个软件的“数据流”和“控制流”都要能
2005-10-10 20:28:00 2884
原创 软件优化技术真经-总论篇
软件优化是一项系统工程。要理解软件优化,首先对软件要有个本质的认识。软件是什么呢?它是一组在计算机平台上运行的逻辑代码。这个概念比较拗口。第一,软件是一组计算机能理解并运行的逻辑代码。第二,软件一定是运行在某个计算机平台上,可能是大型机,可能是PC,可能是手机。好,认识了这两点。就可以正确认识软件优化。首先,软件既然是计算机的逻辑,那么好的软件就是贴合计算机体系结构的
2005-10-09 21:12:00 1600
Software Optimization for High-Performance computing.doc
2008-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人