动态调整串行传输的缓冲区长度的方法

文档序号:6410552阅读:145来源:国知局
专利名称:动态调整串行传输的缓冲区长度的方法
技术领域
本发明为一种有关于数据处理方法,特别指一种应用于串行端口驱动程序(serial driver)中,可根据数据传输量进行缓冲区(FIFO buffer)长度动态调整来控制中断请求间隔的方法。
背景技术
在既有串行数据传输处理的结构里(如图1中所示),串行端口驱动程序(serial driver)30往往被用来作为负责微处理器10和外围装置50之间数据传输的主要沟通桥梁。当外围装置50有任务要执行,需要进行数据传输处理的时候,便会由对应负责的串行端口驱动程序30负责向微处理器10发出中断(interrupt)请求,而在微处理器10接收到来自串行端口驱动程序30的中断请求之后,便会立刻分配一定的资源并允许对应的外围装置50开始执行所请求的数据传输处理。
特别是在数据传输处理的过程中,串行端口驱动程序30主要用来负责微处理器10与外围装置50之间数据的输入/输出传输。而输入/输出传输通常会分别透过串行端口驱动程序30中的输入缓冲区31及输出缓冲区32来进行,所谓的缓冲区(FIFO buffer)即是可用来暂时保留等待传输处理数据的内存,主要用来作为微处理器10与外围装置50之间数据传输处理的缓冲之用。
关于缓冲区的用途已为现有技术范畴,在此不多作赘述。但是由于过去对于缓冲区的使用上,都是采取固定长度(fixed length)的模式在进行(如图1中输入缓冲区31及输出缓冲区32),也就是缓冲区的长度大小及可容纳的数据量为固定的,因此往往在需要传输处理的数据量相当大的时候,这种固定长度的缓冲区就经常会因为数据处理速率的不一致,而导致暂存在缓冲区中的数据超出缓冲区可容纳的最大范围而发生溢位的错误情形;反之,当需要传输处理的数据量非常小的时候,这种固定长度的缓冲区却也经常会因为缓冲区中的暂存数据量不足,而无法产生中断请求加以传输处理,影响到整体的运作效果。
因此,在实际数据传输处理过程中,串行端口驱动程序30中的缓冲区确实有必要随时依据数据传输量来进行缓冲区长度的动态调整,以使得串行端口驱动程序30能够在最适当的时机向微处理器10发出中断请求进行数据传输处理,如此才能够使微处理器10与外围装置50之间的数据传输处理能够维持在最佳化的状态,同时使整体的效果也能够达到最佳化的状况。如何设计一种可以依据实际数据传输量来动态调整串行端口驱动程序30中缓冲区长度的方法,是本发明的重点所在。

发明内容根据现有的串行数据传输处理所存在的问题点,本发明的目的在于提供一种动态调整串行传输的缓冲区长度的方法。
为实现上述目的,本发明所提供的动态调整串行传输的缓冲区长度的方法可依据数据传输量来进行动态调整的模式,也即具有动态长度(dynamic length)的缓冲区模式,该方法包含有下列步骤首先取得起始传输时间、数据传输总量、及终止传输时间;透过运算求得数据传输量;判断是否符合标准区间?当该数据传输量落于标准区间内,且相对数值落于接近该标准区间上限时,增长缓冲区长度;当该数据传输量落于标准区间内,且相对数值落于接近该标准区间下限时,缩短缓冲区长度;最后,依据缓冲区数据状态产生中断请求,开始进行传输数据处理。
相较于现有技术,本发明可避免数据传输量大时,增长缓冲区的长度以减少数据溢位的情况发生;同时也可减少数据传输量小时,缩短缓冲区的长度以提升整体的运作效果。

图1是现有的串行数据传输处理的结构框图。
图2是本发明所提的动态调整串行传输的缓冲区长度的方法的结构框图。
图3是本发明所提的动态调整串行传输的缓冲区长度的方法的运作流程图。
具体实施方式本发明提出一种动态调整串行传输的缓冲区长度的方法。由图1的现有结构及图2的本发明结构中可清楚发现,本发明的主要技术特征在于能够将既有串行端口驱动程序30(serial driver)中的缓冲区(FIFO buffer)(包括输入缓冲区31及输出缓冲区32)从以往的固定长度(fixed length)的模式更改为可依据实际数据传输量来进行动态调整的模式,也即具有动态长度(dynamiclength)的缓冲区模式。
本发明方法主要应用于计算机可执行平台之上,特别是用来提升计算机可执行平台中微处理器10与外围装置50之间的数据传输处理的效果(如图2中所示),因此只要具有微处理器10的计算机可执行平台均可以应用本发明方法,例如手持式移动通信装置(handheld device)中的智能型手机(Smartphone)。
本发明方法的运作流程,将配合图3的部分加以说明(请搭配参考图2的部分)。当外围装置50对串行端口驱动程序30发出数据传输处理的请求时,此时串行端口驱动程序30会在向微处理器10发出中断(interrupt)之前,执行本发明方法进行关于缓冲区长度的动态调整,完成之后才向微处理器10发出中断并开始数据传输处理的作业。至于本发明方法的详细说明如下首先,当串行端口驱动程序30接收到来自外围装置50所发出的数据传输处理请求时,便开始启动本发明方法并取得启动时的起始传输时间(步骤100);启动之后,串行端口驱动程序30便向外围装置50请求读取所需传输处理数据的总数据量(步骤110);并同时预估并取得外围装置50将所有传输处理数据传送至串行端口驱动程序30上的终止传输时间(步骤120);然后根据预设的表达式来计算出数据传输量(步骤130),表达式可以下列公式来加以表示M=D/(T2-T1);其中,M为数据传输量,其单位为字节/滴答(byte/tick);D为数据传输总量,其单位为字节(byte);T1及T2分别为起始传输时间及终止传输时间,其单位为滴答(tick),为一般计算机可执行平台中所产生的内部时序单位。
计算出数据传输量之后,便进一步判断此数据传输量是否符合所预设的标准区间?(步骤140)此一标准区间,为可提供使用者依照计算机可执行平台状态而自行调整定义的默认值,包含有数据传输上限及下限的范围区间,依照数据传输量落于此区间的数值来决定应该对缓冲区进行增长长度或是缩短长度。
当计算出的数据传输量落于标准区间内(即符合标准区间),则判断该数据传输量是否接近标准区间上限?(步骤150)当数据传输量相对数值落于接近标准区间上限时,便执行将缓冲区增长的程序(步骤151),理论上所增长的缓冲区长度最大为1/2缓冲区的长度,此增长限制仅为本发明方法中的较佳实施例而已,实际上此限制也可提供使用者自行加以定义。
当计算出的数据传输量落于标准区间内(即符合标准区间),且数据传输量相对数值未落于接近标准区间上限时,则判断该数据传输量是否接近标准区间下限?(步骤152)当数据传输量相对数值落于接近标准区间下限时,便执行将缓冲区缩短的程序(步骤153),理论上所缩短的缓冲区长度最小为1字节的长度,同样地此缩短限制仅为本发明方法中的较佳实施例而已,实际上此限制也可提供使用者自行加以定义。当计算出的数据传输量落于标准区间内(即符合标准区间),且数据传输量相对数值未落于接近标准区间下限时,此时串行端口驱动程序30便会依据缓冲区数据状态实时产生中断请求,并将中断请求发送至微处理器10中并开始进行传输数据处理(步骤160)。
完成上述步骤100至步骤151、步骤153之后,即已经完成整个动态调整缓冲区的流程,此时串行端口驱动程序30便会依据缓冲区数据状态实时产生中断请求,并将中断请求发送至微处理器10中并开始进行传输数据处理(步骤160)。由于此时缓冲区长度已经过最佳化的动态调整,所以任何来自外围装置50的待传输处理数据在缓冲区中都能够以最顺利、最有效率的方式传输至微处理器10中处理。
标准区间为使用者自定义的部分,可以随时视整体运作状态而作实时的调整,进而使缓冲区长度的动态调整与微处理器10和外围装置50之间的数据传输处理能够更加顺利。举例来说,若以使用于智能型手机的通用异步收发器(Universal Asynchronous Receiver-Transmitter,UART)的串行传输作业来看,较佳的标准区间上限为160字节/秒,标准区间下限为5字节/秒。
以上所述仅为本发明其中的较佳实施例而已,并非用来限定本发明的实施范围,事实上只要应用在计算机可执行平台上并且透过串行端口驱动程序所进行的任何数据传输处理程序都可以套用本发明方法。
权利要求
1.一种动态调整串行传输的缓冲区长度的方法,作用于一计算机可执行平台之上,在外围装置透过串行端口驱动程序(serial driver)请求执行数据传输处理时,可对串行端口驱动程序中的缓冲区(FIFO buffer)进行动态调整以提升数据传输处理效果,其特征在于该方法包含下列步骤取得一起始传输时间(T1)、读取一数据传输总量(D)及一终止传输时间(T2);进行运算求得一数据传输量(M);判断该数据传输量是否落于一标准区间内;当该数据传输量落于标准区间内,且相对数值落于接近该标准区间上限时,增长缓冲区长度;当该数据传输量落于标准区间内,且相对数值落于接近该标准区间下限时,缩短缓冲区长度;及依据缓冲区数据状态产生中断请求,开始进行传输数据处理。
2.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于该计算机可执行平台是指具微处理器的手持式移动通信装置(handhelddevice)。
3.根据权利要求2所述的动态调整串行传输的缓冲区长度的方法,其特征在于该计算机可执行平台是指智能型手机(Smartphone)。
4.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于该起始传输时间(T1)及该终止传输时间(T2),均是以该计算机可执行平台中所产生的内部时序单位为准,此单位为滴答(tick)。
5.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于该数据传输总量(D),是以字节(byte)为单位。
6.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于该数据传输量(M)的求取,可透过下列表达式来计算得出M=D/(T2-T1);其单位为字节/滴答(byte/tick)。
7.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于该标准区间为使用者可自定义的默认值,包含有数据传输上限及下限的范围。
8.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于增长缓冲区长度的步骤中,所增长的缓冲区长度最大为1/2缓冲区的长度。
9.根据权利要求1所述的动态调整串行传输的缓冲区长度的方法,其特征在于缩短缓冲区长度的步骤中,所缩短的缓冲区长度最小为1字节的长度。
全文摘要
一种动态调整串行传输的缓冲区长度的方法,于串行端口驱动程序(serialdriver)执行数据传输处理时,依数据传输量动态调整缓冲区(FIFO buffer)长度。该方法包含有下列步骤首先取得起始传输时间、数据传输总量、及终止传输时间;透过运算求得数据传输量;判断是否符合标准区间?当该数据传输量落于标准区间内,且相对数值落于接近该标准区间上限时,增长缓冲区长度;当该数据传输量落于标准区间内,且相对数值落于接近该标准区间下限时,缩短缓冲区长度;最后,依据缓冲区数据状态产生中断请求,开始进行传输数据处理。如此将可避免数据传输量大时,因缓冲区长度不足且中断请求间隔过长而造成数据溢位;同时也可减少数据传输量小时,因缓冲区长度过长且中断请求间隔过长而造成整体效果不明显。
文档编号G06F13/38GK1773476SQ200410052088
公开日2006年5月17日 申请日期2004年11月8日 优先权日2004年11月8日
发明者叶承溱 申请人:佛山市顺德区顺达电脑厂有限公司, 神达电脑股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1