将个人数字助理系统的处理速度最佳化的装置与方法
本发明涉及一种将个人数字助理系统的处理速度最佳化的装置与方法,尤其涉及一种利用改良的二分法,以将个人数字助理系统的处理速度最佳化的装置与方法。
目前,在以个人随身信息处理功能为主的数字电子产品中,其主要包括了电子计算机、电子书籍、电子秘书,以及电子万用手册等个人数字助理系统(personaldigital assistant,PDA)。个人数字助理系统是一种组织结构较为简单的电子装置,用以执行常用的算术运算、个人资料的记录搜寻,以及其他功能。个人数字助理系统所执行的功能不需以高阶的处理器以及大量的存储器来完成。因此,通常采用16位(甚至8位元)的处理器和低容量的存储器即可运作。
以解方程式的功能为例,一般皆采用二分法(dichotomy)。由于个人数字助理装置的体积有限,成本较低,因此无须采用高阶的中央处理器和大量的存储器,而多采用8位或16位的中央处理器。此外,因主频和总线的宽度有限,使计算能力和数据交换能力受到限制,并且仍采用低阶的中央处朝器,使得硬件上不具备浮点数运算的功能,而需利用软件针对浮点数进行运算。然而以软件方式进行浮点数的运算,需使用一定量的数据储存空间(存储器),以进行大量数据的交换与计算。因此,采用已知的二分法时,将面临计算次数过多,以及因大量的浮点数运算而占用大量的时间与存储器的难题,且对精确度要求较高的情况下,其运算次数愈多,耗费的时间与系统资源也愈多。
已知的二分法是将数据的区间平均分成两部分,并判断所求的结果是在哪一个区间,而后再将所求结果所在的区间平均分成两部分,并再行判断所求的结果是在哪一个区间,如此往复,直至所求结果所在的区间的范围小于精确度的要求为止。
已知二分法的算法简单、容易实施,而且能保证结果的准确性,其为各种计算系统常用的演算法之一;但其收敛速度慢,特别是对计算的精确度要求较高,或所需计算的函数过于复杂时,将致使计算量庞大,计算所需的时间过长,进而导致计算系统的效率降低。再者,由于计算量庞大,势必耗费存储器的空间,对于硬件资源有限的计算系统,如多数便携式数据处理系统,其中包括个人数字助理系统等体积小、硬件资源有限的系统而言,采用已知二分法的计算方式,将导致计算速度慢,并影响计算结果的输出,从而使计算系统的性能受到影响。
如上所述,二分法虽然是计算器上常用的演算法,但是在实际应用中发现:在利用二分法求解的过程中,起先的执行效率很高,能很快的接近所求解,但是稍后的效率就比较低,特别是在对解的精确度要求较高的情况下,必须经过较多次的计算才能得到所求解。因此,本发明所揭示的方法与装置系将计算过程最佳化,利用较小量的辅助运算,以较快的收敛速度达到减少计算量,并提高运算速度的目的。
本发明所揭示的将个人数字助理系统的处理速度最佳化的装置与方法,是针对已知二分法的缺点加以改进,结合已知二分法与弦截法,使其具有加速求解过程的收敛性的功能。其保留了已知二分法的优点,同时又采用了线性化的方法处理计算区间,使整个过程除了计算函数值外,都是简易的线性运算。而进行线性计算所需的硬件资源,如存储器、中央处理器的占用时间等都是较少的(进行计算时,主要的硬件资源消耗是在函数的计算过程中,即中央处理器的占用时间)。因此,本发明所揭示的二分改进法与装置,可节省计算系统的硬件资源的消耗。
总之,本发明所揭示的装置是一种实施二分改进法的装置,用以往提升个人数字助理系统的效能,而不需增加额外的硬件资源。此装置主要包括处理装置、暂时储存装置、计算控制模组、浮点数运算装置,以及语法分析模组。处理装置用以对数值进行计算的装置处理装置;暂时储存装置用以暂存计算过程中所产生的中间结果;计算控制模组用以控制处理装置的计算过程,并包含二分改进法的控制代码;浮点数运算装置辅助处理装置进行浮点数运算的装置;语法分析模组系用以分析表达式的结构以得到正确的计算表达式。本发明所揭示的装置可应用于各种处理系统中,特别是用以有效提高硬件资源有限的处理系统的性能。
图1为将个人数字助理系统的处理速度最佳化的装置的系统功能方块图;
图2为将个人数字助理系统的处理速度最佳化的装置的运作流程图;
图3为二分改进法的流程图;
图4为说明二分改进法的原理的函数图(直角座标系);
图5为个人数字助理系统所提供的函数及其功能。
图1为将个人数字助理系统的处理速度最佳化的装置的系统功能方块图。由图中可见,将个人数字助理系统的处理速度最佳化的装置100主要包括:输入装置102、处理装置104、输出装置106、暂时储存装置108、计算控制模组110、浮点数运算装置112,以及语法分析模组114。
请参阅图1,输入装置102用以提供计算所需的各种条件,如函数表达式、初始值等;一般以键盘做为标准输入装置,当然也可以是其他的输入设备。处理装置104用以对数值进行计算的装置;在处理系统中,处理装置为中央处理器(CPU)。暂时储存装置108用以暂存计算过程中所产上的中间结果,具有数据读写的功能,可将数据116传递给处理装置104,并接收处理装置传来的地址及数据118;在处理系统中,以随机存取存储器(RAM)做为暂时储存装置。处理装置104的运算过程由计算控制模组11O控制,并接收处理装置104传来的地址120,其根据计算过程中的情况和状态的不同,而采取不同的计算方法,并发出相应的指令122,使将个人数字助理系统的处理速度最佳化的装置100完成计算功能。计算控制模组110包含了二分改进法的控制代码,一般而言,此代码是固定不变的,在多数的处理系统中,将其整合在只读存储器(ROM)中,使此模组能避免因操作失误所造成的影响。在将个人数字助理系统的处理速度最佳化的装置100中还包括浮点数运算装置112;浮点数运算装置112为完成浮点计算功能的基础,其接收处理装置104传来的数据与指令124,并将计算结果126传递给处理装置104。在一些功能齐备的处理系统中(如个人电脑),浮点数运算的功能由硬件执行,亦即由单一晶片完成,或整合在中央处理器中,但是在体积小、价格低廉,且硬件资源有限的处理系统中,并没有实施浮点数运算功能的硬件配置(如浮点运算器),而必须利用软件的方法来执行浮点数运算功能。在此情况下,通常将浮点数运算程序代码置人只读存储器中,以达到与硬件解决浮点数运算问题相同的效果。浮点数运算程序提供了一些基本函数的接口,使其具备基本的运算功能。如图5所示,以个人数字助理系统所提供的函数为例,其所提供的函数包含了基本的数值运算功能,如PDA_loge函数可执行以自然对数为底的指数运算功能。此外,语法分析模组114用以分析表达式128的结构,以得到正确的表达式的计算结果,而后通过使用正确的指令130计算表达式,才能解出结果。在计算表达式时,根据需要使用浮点运算模组中的函数,其中表达式128是由输入装置102所接收的字节或数值数据。解出的结果经由输出装置106输出。
图2为将个人数字助理系统的处理速度最佳化的装置的运作流程图。由输入装置读取运算所需要的表达式和初始化数据后(步骤200),由于输入设备产生的是字节符号,所以要将输入的信号转换成一定的格式,例如将字串符号转换成数值,如此才能使装置正常准确地运作,同时将一些初始的数据转换后,置入暂时储存装置中。在输入之后,由语法分析模组对输入的表达式和数据进行分析比较(步骤202),以产生一个符合表达式定义的正确的计算过程,由于这个过程将在以后的计算中被重复使用,并且不会被改变,因此可将计算过程形成一个分析模组,并置于暂时储存装置中(步骤204),以提供后面的计算过程使用。在确定了分析模组后,就进入到运算过程。由于运算的过程是逐次逼近的,直至能达到精确度的要求为止,因此运算过程为一循环过程,在一次循环开始前要确定解的范围,此范围的两个端点作为参数参预计算。第一次循环时,从暂时储存装置中读取用户输入的初始数据,使用二分改进法来计算和确定下一次循环的解的范围,即下一次计算的参数。在使用二分改进法执行计算功能的过程中,由计算控制模组发出计算的指令,其中包括利用存放在暂时储存装置的分析模组、计算表达式的结果,以及计算相关的参数,并确定计算采用的方法和步骤,而后把计算的结果存入暂时储存装置。在下一循环计算结束后,即确定了下一循环的计算参数,并开始新的计算过程,如此循环,直到计算结果满足所需精确度的要求为止(即正确解与所得解之差值小于给定的误差范围)(步骤206)。计算控制模组在发出和与浮点数计算相关的指令后,会利用浮点数运算装置提供的函数进行计算,并将计算结果经格式转换后,利用输出装置显示出来(步骤208)。
计算控制模组以二分改进法为基础,其演算的流程图与其原理的函数图请参阅图3与图4。由输入装置读取表达式和初始化数据后(步骤300),已知方程式F(X)=0的解在xs与xc之间,若xs与xc满足精确度的要求则计算过程结束(步骤302)。xm为xs与xe的中点,点(xx,ys)、(xe,ye)及(xm,ym)分别是点xs、xe及xm在F(x)上所对应的点。(xs,ys)和(xm,ym)的连线与X轴相交于(x1,0),(xe,ye)和(xm,ym)的连线与X轴相交于(x2,0)。由图4可知,解在x1与x2之间。求出(x1,F(x1))与(x2,F(x2))的连线与X轴的交点,如果此交点能满足对解的精确度要求,则得解;当解不满足精确度的要求时(即误差大于给定的误差范围),若xI和x2在xs与x之间,则以xi代换xs而以x2代换x。(步骤304、306及308),否则以已知的二分法求xs与xc(步骤310),再进行运算直至达到精确度的要求为止。一般情况下,上述方法的收敛速度非常快。在确定x1和x2的值的过程中采用了弦截法,使得在收敛时具有超线性的速度。
上述的计算过程需要计算几个辅助变量,其计算过程如下:x1和x2是经过计算后的解的区间的两端点。假设k1是(xs,ys)和(x1,0)连线的斜率,而k2是(xe,ye)和(x2,0)连线的斜率。利用k1和k2可计算出x1和x2:
x1=-ym/k1+xm k1=(ym-ys)/(xm-xs)
x2=-ym/k2+xm k2=(ye-ym)/(xe-xm)
由于已知的二分法在其运算的开始过程中效率高,同时为了保证用上述方法时的收敛性,保留了已知的二分法,并在一定的条件下进行切换,如此可同时保证快速收敛性与较高的计算速度。由于两种算法的共存,用改进的方法在一次循环中计算所用的指令相对已知二分法较多,所消耗的时间也较多,但是由于改进演算法的收敛速度快,相对得到计算结果需要的循环次数明显减少。由于总时间是单次循环时间与循环次数的乘积,因此消耗的总时间会减少。对于复杂的函数而言,计算函数值所需时间占了很大的比例,使用二分改进法可明显地减少计算函数值的次数,从而减少了计算结果所需的时间。
由二分改进法的计算过程观察,其保留了二分注的优点,同时又采用了线性化的方法处理由中点分割开的两段弦,整个过程除了计算函数值外都是简单的线性运算,这部分即保持了二分算法的简单性。而进行线性计算所要花费的硬件资源,如储存器、中央处理器的占用时间等都是较少的。主要的硬件资源消耗是在函数的计算过程中,因此改进算法在加快收敛速度的同时,也节省了计算的时间。
以上就是改进后的二分算法的计算方法。采用改进二分算法后计算效率提高,计算次数与数据交换的量也显著地减少,因此缩短了计算所需的时间。对精确度的要求愈高时,改进算法的效率愈高。
此外,在电子数据处理器中,都会用到数据检索,例如在一个庞大的数据库中,搜索相匹配的数据,如果利用二元树的方法进行搜索,就如同利用二分法解数值问题,其效率不高。如果利用离散函数将数据转换成数值的形式,按照二分改进法计算,由于二分改进法具有超线性的收敛速度,解出数值解的速度快,因此能很快地完成搜索,并减少硬件资源的利用,对提高资源有限的处理系统的性能有很大的帮助。
下表为已知二分法与二分改进法的比较
方程式Y=20*(1+X)0.6+12*(1+X)1.5+X,0≤X≤100,误差≤10-8 |
Y值 |
二分法计算次数 |
X值 |
改进的二分法计算次数 |
X值 |
121.45678901 |
36 |
2.4515333339077 |
9 |
2.4515333338487 |
12145.67890123 |
39 |
97.516779828567 |
9 |
97.516779828515 |
2145.67890123 |
37 |
28.911839948858 |
12 |
28.911839948933 |
方程式Y=X6+2*X5+3*X4+4*X3+5*X2+6*X,0≤X≤10,误差≤10-8 |
Y值 |
二分法计算次数 |
X值 |
改进的二分法计算次数 |
X值 |
0.5204321 |
30 |
0.080907894298434 |
9 |
0.080907895479-98 |
987.65432109 |
38 |
2.7127044798908 |
18 |
2.7127044798870 |
39897.654321 |
46 |
8.2169187346695 |
18 |
8.2169187346694 |
1198987.654321 |
48 |
9.9495201037386 |
15 |
9.9495201037386 |
由观察上表所列的实际计算结果可知,采用本发明的二分改进法,在函数的计算次数方面,可以比使用习知二分法减少大约50%至75%的计算次数,使花费的时间显著地减少,同时不需增加新的硬件设备,对于储存器的使用也没有增加,因此可以在相同的硬件条件下,提高产品的性能。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的申请专利范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在所附权利要求范围内。