问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

p4作整数乘法的时钟周期是多少?

发布网友 发布时间:2022-05-04 11:21

我来回答

1个回答

热心网友 时间:2022-06-21 10:59

XScale体系结构是采用Intel Pentium技术实现的ARM兼容的嵌入式微处理器架构,并对ARM体系结构进行了增强,具有业界领先的高性能和低功耗特性被广泛应用于消费电子、无线通信、多媒体和网络交换等嵌入式应用领域。XScale引入了一系列高性能微处理器的设计技术,总体性能显著地超出同主频的ARM微处理器。然而,由于受功耗、成本和体积等因素的制约,嵌入式微处理器的处理能力与桌面系统相比仍存在较大差距。通常需要对嵌入式应用程序进行性能优化,以满足嵌入式应用的性能需求。

业界对嵌入式系统的性能优化进行了很多研究与实践。文献为XScale优化编译器的设计提供了多种优化技术,也可用于一些应用程序的手工优化;文献从应用程序编程的角度讨论了ARM嵌入式系统软件设计优化技术;文献讨论了提高C/C++嵌入式应用程序性能的一些技巧,其中多数技术可以由优化编译器中实现。

本文在总结XScale优化编译器设计和XScale嵌入式系统设计开发工作的基础上,从系统设计、开发工具选择、编译优化和编程开发等角度讨论和提出了XScale应用程序的优化策略和技术。

1 XScale体系结构

XScale微架构引入了Pentium处理器工艺和系统结构技术,实现了Pentium微处理器体系结构的一系列高性能技术,达到了高性能、低功耗和小体积等嵌入式系统要求的特性。

(1)超流水线

Xscale的超流水线(SuperPipeline)技术,如图1所示,由整数处理(integer)、乘加(MAC)和存储(memory)3条流水线组成。3条流水线的长度是6到9段,前4到5段共享,后面分支部分并行工作可有效提高处理器性能。

(2)高主频

采用Pentium工艺技术,XScale主频可以超出普通ARM微处理器主频数倍,在保持较低能量消耗的前提下,高达600MHz以上。如PXA27X的主频可高达724MHz。

(3)存储体系

XScale实现了一个高效的存储器体系结构,为其超流水线的高效运行提供数据资源。XScale存储体系功能主要包括32KB D-Cache、32KB I-Cache、2KB Mini Dcache、Fill Buffers、ending Buffers以及4.8GB/s带宽的存储总线,使处理器可以高效访问存储器。

(4)分支预测

XScale实现了基于统计分析的分支预测功能部件,减少由于分支转移冲刷指令流水线的次数,也有效地提高了处理器的性能。

(3)指令集体系结构

针对ARM数据处理能力的不足,XScale对ARM的乘加逻辑进行了增强,增加了8条DSP指令。XScale处理器还可集成Flash闪存和无线MMX逻辑功能。这些特性有效地提高了XScale数据处理能力。带有无线MMX的PXA27X在312MHz主频运行处理多媒体应用时,其性能与520MHz ARM处理器相当。

(6)省去不常用的逻辑功能

为了节省处理器芯片体积和降低运行功耗,XScale体系结构没有实现昂贵的浮点运算部件和除法部件。这些是嵌入式应用中不常用的运算。当需要这类运算时,可以通过软件方法实现。

XScale复杂的体系结构给嵌入式应用程序的优化带来了更大的困难。

2 性能优化技术

XScale处理器性能的发挥很大程度上依赖于应用程序的优化技术。XScale嵌入式应用系统的性能优化可以下几个方面考虑。

2.1 算法结构优化

实现某种应用功能通常可采用多种算法或方法,不同算法的复杂度和效率差别很大。选择一种高效的算法或对算法进行优化,可以使应用程序获得最大的优化性能。常用的优化技术有以下几种。

(1)选择高效算法

如果算法效率低下,再快的处理器也会显得不够有,而一个高效的算法却可以弥补处理器性能的不足。

考虑从已排序好的n个元素a[0:n-1]中找出某一特定元素x。如果采用顺序搜索方式,从a[0]到a[n-1]逐个比较这n个元素,需要O(n)次比较。而如果采用二分搜索方法,则仅需O(logn)次比较。当n为2 31时,前一算法平均需要比较2 31次,后一算法平均仅需比较31次。两者所需时间相差达10 8倍。

(2)递归算法非递归化

采用递归过程实现算法具有结构清晰、程序简练易读、正确性容易证明的特点;但递归算法通常需要执行大量的过程调用,并在堆栈中保存所有返回过程的局部变量,效率往往较低。当应用程序存在性能问题时,使用循不迭代方法将递归算法转换成非递归算法往往可以使程序性能提高数倍。文献对八皇后问题和Fibonacci数列的递归算法与非递归算法进行了性能比较试验,结果如表1所列。

表1 递归算法和非递归算法的性能对比

问题 递归算法时间/s 非递归算法时间/s 加速比/倍
八皇后问题(最大栈深度为12) 100 20 5
Fibonacci数列(n=40) 50 1 50

算法优化是首选的优化技术。

2.2 编译优化

随着编译技术的成熟,很多编译器都实现了较强的代码优化功能,可在编译过程中自动对应用程序进行优化,改进一些不合理的结构,生成效率较高的目标代码。

多数编译器都可基于数据流分析实现别名分析、常数拆叠、常数传播、公共子表达式消除、冗余代码和死码删除、循环不变量的移动、循环逆转、循环展开、函数嵌入等与体系结构无关的优化。

GNU gcc、WindRiverdiab、Intl XScale Compiler等常见编译器都针对XScale体系结构进行了优化设计,可以有效地利用XScale/ARM指令的条件执行、条件设置和操作数移位等功能,使一条指令完成多个操作,缩短指令序列的长度;减少跳转指令的数目,减少冲刷流水线的次数;按照XScale超流水线要求,利用3地址指令、多字传送指令、DSP乘加指令和MMX指令等,生成高效的指令序列,提高应用程序的性能。

一些优化编译器可借用并行程序设计技术,进行相关性分析,获得源程序的语义信息,采用软件流水线、数据规划、循环重构等技术,使应用程序呈现更好的局部性,提高Cache命中率,从而提高计算密集型应用程序的性能。对于矩阵计算等计算密集型程序,一些高性能优化编译器生成的代码可以高出普通编译器产生的代码十倍之多。

应用程序开发过程中应该充分利用编译器的代码优化功能,在编码时将主要精力集中在业务逻辑算法流程的设计上,提高编程效率和代码可读性。

2.3 编程优化

编译优化是静态优化。优化编译器可以自动完成程序段和代码块范围内的优化问题,但编译器很难获取程序语义信息、算法流程和程序运行状态信息。很多情况下也需要编译人员以某种方式将程序运行状态信息传递给编译器,或进行手工优化。以下是常用的编译优化技术。

(1)使用inline函数

多数编译器支持inline关键字。如果一个函数被设计成一个inline函数,那么在调用它们的地方将会用函数体来替代函数调用语句,这样将会彻底省去函数调用的开销。使用inline的最大缺点是函数在被多处调用时,代码量将增大。

(2)减少函数调用参数

根据ARM过程调用规范,4个以下的形参通过寄存器传递,第5个以上的形参通过存储器栈传递。显然,通过存储器栈传送参数的开销较大。函数调用形参*在4个以内,可以降低函数调用的开销。

(3)在Switch是一种使用普通的编程技术。编译器为之产生if-else-if嵌套代码,并按照顺序进行比较,发现匹配则跳到满足条件的语句执行。编程时,根据发生的相对频率排序,将最可能发生的情况放在第一位,最不可能的情况放在最后一位,可以提高Switch语句块的执行速度。

实际上,程序中if条件的处理也有类似的特性。

(4)避免使用C++的昂贵功耗

C++在支持软件工程、面向对象程序设计、结构化对C进行卓有成效的改进,但在代码尺寸、执行速度等方面比C语言差一些。C++的类机制与C语言的结构差别不大,但C++的多重继承、虚拟基类、模板和运行类型识别等特性对代码尺寸和运行效率有负面影响。对这些功能要慎重使用,可以通过试验测试其影响的大小。

(5)减少或避免执行耗时的操作

应用程序的主要执行时间通常花费在关键路径代码段或程序模块,关键路径程序模块往往包含循环或嵌套循环。减少循环或内层循环中昂贵操作的执行频率可以显著地提高应用程序的效率。常见的耗时操作有:I/O操作、文件访问、图形界面操作和系统调用等。

表2列出了XScale常见的I/O处理、系统调用和文件访问等昂贵操作的代价。

(2)避免浮点运算

XScale没有实现浮点部件。浮点运算是通过系统库实现的,代价很高,通常也应该避免,有时可以转换成整数运算。包含浮点运算的库例程有格式化输入输出(scanf/printf)等。XScale中常见浮点运算的代价如表3所列。

表3 XScale常见浮点运算的代价

运算类型 代价(时钟周期/个)
加法+ 400
乘法* 400
除法/ 500

我 不知道这个能不能帮你`1你自己可以看看<参考资料>

参考资料:http://www.blogcn.com/user21/bluesteven/index.html

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
远得要命的爱情丁菲是谁演的 远的要命的爱情里的乔佳影是谁演的 远得要命的爱情乔佳影是什么角色 问。。我在厦门办的银行卡回江西可以用吗? 远得要命的爱情中的乔佳影是个怎样的人 厦门农信社的公告出来了,想问一下银行合同制和劳务派遣和正式工的区别... 厦门的信用社银联卡到南宁能不能用?要不要手续费? 泉州农信社年前新办的卡,存了钱,银行说三个工作日后才能动这个钱,为什 ... ...女鞋的话 是不是必须直通车 我们鞋子都是20---50鞋子利润低 直通车... 拼多多直通车200红包(拼多多直通车每天烧1000) 请问stc12C5A60S2四十脚直插单片机用keil编程时怎么把它的P4口作为普通的I&#47;O口用(P4.4-P4.7),谢谢! C语言编程题 题目:任意输入4个点,求围成四边形的面积 编程问题 急!!! 哪里有钣金萨瓦尼尼(冲剪复合中心)设备招人的,我有两年的工作经验,操作编程都会。p4也能编程, 编写一程序P4129.C实现以下功能 从键盘读入两个字符cBegin和cEnd,要求输出≤cBegin且≥cEnd的所有字符。 stc89c52rc lqfp编程时怎么使用P4口 三菱PLC上的-P2 -P3 -P4代表什么。 STC89C52单片机编程时出现P4 undefined identifier 编程g代码G54.1 P4 是什么意思 跪求:开机时忘记了用户登陆密码怎么办? 普通用户如何使用cmd的net user命令修改自己的登录密码? 在user用户下如何知道管理员登陆密码 我的本地Web登录账号是user,密码是uwwqm,怎样修wⅰfⅰ密码 怎么设置userpassword密码破解开机密码 用户是user密码是wifi登录密码,怎么办? User密码问题 为什么抖音看不到外省的人 例句:你一个人出门在外,一定要照顾好自己。句中一定应做何解释??? 出门在外天冷了关心家人的话 暖心照顾好自己的话 我想要P4 1.6 和C42.0的资料 给我小孩起名字我是姓李? C语言编程题 题目:任意输入4个点,求围成四边形的面积是多少? C++程序编程 c语言编程题!!急求!! 关于扑克牌(要完整代码最好有解释) 加工中心刀具半径补偿怎么编程? - 信息提示 你在淘宝买过哪些鸡肋产品? oppo手机悬浮窗怎么缩小 oppo 手机怎样设置创建快捷浮窗 小孩子经常无缘无故鼻子出血是怎么回事 小孩早上起来突然流鼻血是怎么回事啊? 小孩子突然流鼻血了,怎么办 我家1楼宽带已经安了,在二楼买个路由器能不能联接宽带的信号? 家里二楼路由器接了一条网线到一楼,打算一楼再接个无线路由器,请问怎么设置 你好,请教你一个问题:我住处的宽带在二楼有个路由器,我想在一楼用手机WIFI 上网。路由器该怎么安装? 网线接口在2楼,有线路由器在一楼,我想在2楼在按一个无线路由器,能连上么? 我住二楼,房东的路由器在一楼,信号不好,我自己买了个路由器,请问怎么和他的路由器连接? 家里二楼有无线路由器在一楼搜不到信号,现在一楼电视机要上网。再买一个路由器放在一楼做桥接行不行? 网络问题,从二楼路由器线连到一楼大厅,接电脑连接不了网络,路由器正常,求大神指点