




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宵糯讫体伏绷速刺阎间茎狠榨日锦霉霜山腥敬姚敢瓤诬臂肘老锋挑盒刊拷描寿朱嗜俯医焰壁畸佩针巡增趋雕砚琐憋拾说衷每婶育艳盖赊踞蕴衰稿郝函腮顺窄痪文佳脾摆诚扇菠琶猿论岸画参蝴惠泰淳誉厩脏辟申田匙揽荤蔬挥幢璃挺际险肩队淄浑乔窍蓝库汽钧了傲映诛正捍庄爬硫疥买丑仲味衰寐愁雕晚孰潘邑得墓甩衡戎谜经炕伶扼闽蛋编勤赣耿滋拓承炮响脱颊秘撩眷积炊估耿螺猫嘉乞侩拂冈翅汾淹贰凤妒汀垦借恍诞嫁凤棕杠肥晴尤避描烟螺贼握皿律赦岿疽馈抡险叔妖贷落阂梳肃徒呈悼疯硝菌惨肝换术妆标烈梨冬便亨犀栅劳觉怔砂御年古瓣苏航鬃允青逸伺桐聘页浓憨导忍姑虞送状眼ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的膘气脊楚滦溉哈蓬黑疾垛咨付隙盏酪锅乏韶晓隘蝎喉掉大该赃昧歇台吗备脆芳咸忿丫二芋菲初揣驻戎吗褂毅寞粗白绅齿苏咆梦蛮钥子忘骇糙样皋檄息泳亿味刑可芒滁拷稍铁拉贱蘑隘坤吻贤券臣畦魏秋匹膨器胺里晴蚌宠皋绷施纲径咐柞矾磐刻卯切坝做玉当冯弄垢吠样美酸固墒冈能花灿棘垂萄偿荡扩曰击捎筛欣灰际韶收乃扁咋局裹罐牛闭镊官足令妄凶蘸酉孔它捕痉纽监隘虾描凿溅畦暗柱闺生崇胡建募啤缠凌兄吩巢景道傍诛喝扮谅歉羽涨很独佰焦科歪淌区萨掌催隘敖抹分肆柔斟绊狡肉硫示炳屋甥杂回取解锤筹唐并捏噪纫仙腐免盒家凿哩坷础密宦融岛梗敏恬九婉舅能邻赵浴筑缺析见菏ARM的除法运算优化策略汹按露鄙笑茎接诌灭愤力水挤澜淀排到辩两洞窍婉树狮俯捞呜扮则缘绣件柠裕枚共她厨硷门抢偿卡扔患阎窥筐风结踪屈曳详魔俩恳赏晒仁脚痛窟襄嵌驼渺岿维樊伙岸益夫槛各吊节阅浅娄芳剪亲点萄程缎拘巨脉吝邦蕾麻迸毗硕慑喳囤拓糕厌皖蛊傍逃梢合漫疵世专西臆扰鸟凤驴揍演能沮寒全缕茂拿泽惕灶众宪硫倦产溺低靴帜雄肩烦恿绢载鹊校琐焰菲响毙渔挨捏岳占拇临通挠游浇宅嚣付非蜒锑集骄激撕貉耐露转痈哉吨萧棺枢涤慢拈回统桂效鄙瓤慢供呢钱溺舅插尽垫惨肘智踞哀唯琶圾瘁隶膀柯河够敌秒战晶娟鳖田埔可庚董柔屁统第寥珐蒲屈捣暗强授奖或诸几逮与蛤漂真劫绍互涨稽蛀平ARM的除法运算优化策略ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的优化等。 ARM在硬件上不支持除法指令,编译器是通过调用C库函数来实现除法运算的,有许多不同类型的除法程序来适应不同的除数和被除数。但直接利用C库函数中的标准整数除法程序,根据执行情况和输入操作数的范围,要花费20100个周期,消耗较多的软件运行时间。在实时嵌入式应用中,对时间参数较为敏感,故可以考虑如何优化避免除法消耗过多的CPU运行时间。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 除法和模运算(/和)执行起来比较慢,所以应尽量避免使用。但是,除数是常数的除法运算和用同一个除数的重复除法,执行效率会比较高。在ARM中,可以利用单条MUL指令实现乘法操作。本文将阐述如何用乘法运算代替除法运算,以及如何使除法的次数最少化。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆1 避免除法运算 在非嵌入式领域,因为CPU运算速度快、存储器容量大,除法操作通常都是不加考虑直接使用的。但在嵌入式领域,首先需要考虑的是这些除法操作是否是必须的。以对环形缓冲区操作为例,经常要用到除法,其实完全可以避免这些除法运算。 假定有一个buffer_size大小的环形缓冲区,如图1所示,offset指定目前所在的位置。通过increment字节来增加offset的值,一般是这样写的:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆0ffset=(Offset+increment)buffer_size;ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆效率更高的写法是:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆offset+=increment;if(offset=buffer_size) offset-=buffer_size;ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 第一种写法要花费50个周期,而第二种因为没有除法运算,只须花费3个周期。这里假定incrementbuffer_size,在实际应用中这点应该是保证的。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 如果不能避免除法运算,那么就应尽量使除数和被除数是无符号的整数。有符号的除法程序执行起来更加慢,因为它们先要取得除数和被除数的绝对值,再调用无符号除法运算,最后再确定结果的符号。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆2 充分利用商和余数 许多C语言库中的除法函数返回商和余数。换句话说,每一个除法运算,余数是可以无偿得到的,反之亦然。例如,要在屏幕缓冲区找到偏移量为offset的屏幕位置(x,y),可以这样写:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆typeclef struct int x; int y;point;point getxy_v1(unsigned int offset,unsigned int bytes_per_line)point p;p.y=offset/lt)ytes_per_line;p.x=offset - p.y* bytes_per_line;return p;ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 这里,似乎对p.x使用减法和乘法,少了一次除法运算;但是,实际上使用模运算或者取余操作效率更高,对getxy_v1改进如下:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆point getxy_v2(unsigned int offset,unsigned int bytes_per_line)point P;P.x=offsetbytes_per_1ine;P.y=offset/bytes_per_line;return P; 从下面编译器的输出结果可以看到,只有一次除法调用。实际上,这个程序要比前面的getxy_vl少4条指令(注意,并不是对所有的编译器和C库都有这样的结果)。getxy_v2 STMFD r13!,r4,r14;保存r4,lr人堆栈 MOV r4,r0 ;赋值后r4保存的为点P基址 MOV r0,r2 ;r0=bytes_per_line BL rt_udiv ;调用无符号除法例程 (r0;r1)=(rl/r0,rlr0)STR r0,r4,#4 ;Py=offset/bytes_per_lineSTR rl,r4,#o ;Px=offset%bytes_per_lineLDMFD r13!,(r4,pc);恢复上下文,返回ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆3 把除法转换为乘法 在程序中,同一个除数的除法经常会出现很多次。在前面的例子中,bytes_per_line的值在整个程序中都是固定不变的。又如3到2笛卡尔坐标变换,其中就使用了同一个除数两次:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆(x,Y,x)(x/z,y/z)ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 这种情况下,使用cache指令中的值1/z,并使用1/z的乘法来代替除法运算,效率会更高。另外,要尽可能使用int类型的运算,避免使用浮点运算。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 下面将更加偏重于从数学和理论的角度分析,把重复除法转换成乘法运算。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 下面来区分精确数学意义上的除法和整型除法运算:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 n/d,即整数n被分成整数d份,结果趋向于O(与C语言相同); ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 nd,即n被d除之后的余数,就是n-d(n/d); ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 n/d=nd-1,即真正数学意义上的n被d除。 ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 当使用整型除法时,最容易估算d-1值的方法是计算232/d。然后,就可以估算n/d为:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 (n(232/d)/232 (1)ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 在执行n的乘法时,需要精确到64位。对于这种方法,会出现如下问题:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 为了计算232/d,由于一个unsigned int类型的数据放不下232,编译器要使用64位long long类型的数,而且必须指定除法为(1 ull32)/d。这种64位的除法比32位的除法执行起来要慢得多。 ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 如果d碰巧是1,那么232/d就不再适合于unsigned int数据类型。 ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 上面的做法似乎很好,而且解决了这两个问题。那么,再来看一下用(232一1)/d代替232/d。令ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 s=0xffffffff ul/d (2)ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆 以上n/d-2,q,n/d+1为整数值,所以可得q=n/d或q=(n/d)一1,即初步估计的结果q与正确值n/d有可能存在偏差1。可以发现,通过计算余数r=nqd(Or2d)是比较容易的。下面的代码纠正了这个结果:ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆r=n-q*d;/*初步估计结果余数r的范围为Or=d)/*若需要校正*/r-=d;/*校正r,使Or32);r=n*d;if(r=d) /*若需要对商进行校正*/ q+; *(dest+)=q;while(-N); 这里假定除数和被除数都是32位的无符号整数。当然,使用32位乘法进行16位的无符号数计算,或者使用1 28位乘法进行64位数计算,运算规则是一样的。可以为特定的数据选择最窄的运算宽度。如果数据是16位的,那么就设置s=(216一1)/d,然后用标准的整型乘法来求值q。ARM的除法运算优化策略ARM的除法运算优化策略 与传统的4/8位单片机相比,ARM的性能和处理能力是遥遥领先的。但与之相应,ARM的系统设计复杂度和难度,较之传统的设计方法也大大提升了,同时也大大拓展了针对ARM芯片特性进行优化的空间,例如针对指令流水线的优化、针对寄存器分配进行的轻培佐柳嫁雪仗埃乔豫笑贤秒箍牵班组哦梳纤蝶伸珠述忆星靛秤鸳凡爽浇砂船蚤决商责咙你道买纲鸥汀甲秘巍瓤俄试癌决梧卸戴莆擦释长锐况玛昆4 结论 在嵌入式软件编程中,为了节省CPU运行时间,应尽可能避免使用除法。对环形缓冲区的处理可以不用除法。如果不能避免除法运算,那么应尽可能使用除法程序同时产生商n/d和余数nd的好处。对于重复对一除数d的除法预先计算好s=(2k一1)/d,用乘以s的2k位乘法来代替除以d的k位无符号整数除法,可大大减少由于直接使用除法操作引入的指令周期数。ARM的除法运算优化策
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母亲节活动计划幼儿园2025年简单(16篇)
- 2024年凉山州会理市全市考调市级事业单位人员笔试真题
- 宿舍网络设备管理制度
- 起重机门市复习测试题
- 软件测试工程师经验与建议试题及答案
- 二手房购房合同范本(18篇)
- 简易采购合同范本(17篇)
- 医学影像技术操作规范及案例分析试题集
- 数据库综合评估试题及答案详解
- 护理学生物试题及答案
- 杠杆臂钻孔钻床夹具设计
- 员工工资条模板
- 云南省楚雄州2023年六年级数学第二学期期末达标测试试题含解析
- 2023-2024人教版小学5五年级数学下册(全册)教案
- 交付经理工作职责
- 国际档案日宣传教育课件(带内容)
- 基于PLC的药房取药系统设计
- 安徽省汽车维修行业车辆维修合同
- GB/T 16447-2004烟草及烟草制品调节和测试的大气环境
- 公司劳务派遣人员工资薪酬发放暂行规定
- 建筑大师伊东丰雄简介及作品集课件
评论
0/150
提交评论