事件插入方法

文档序号:6609730阅读:246来源:国知局
专利名称:事件插入方法
技术领域
本发明涉及通信领域,更具体地涉及一种事件插入方法。
背景技术
在目前的手机设计中,事件处理单元(Time Processing Unit,简称TPU)作为整个系统的精确定时装置,所有精确定时的事件都是通过向TPU注册事件来实现的。
在一般终端中,都要求最少128个事件,分为等待事件与下发事件,占用的存储空间比较大。在移动终端中,由于存储空间有限,对于处理事件需要的存储空间采用了静态分配、动态使用的方式。然后使用了双指针链管理同一片事件空间,其中,一个链管理已使用的事件列表;一个链管理空闲的事件列表。当有新的事件需要插入时,首先从空闲链中获取一块事件空间,填入需要的事件信息,然后根据时间信息,插入事件到已使用事件链中。反之,如果需要释放一块事件空间,顺序刚好相反。
这种方法对于空间的使用非常巧妙,既保证了事件的存储空间,又不会对其他内存空间的使用提出约束。由于避免了排序过程中的存储空间拷贝操作,所以插入和搜索的速度也还算比较快。
事件注册后,需要按照事件的先后顺序进行排序。在现有的设计中,如果一次注册很多事件,软件处理的搜索次数变得很多,处理时间变得相当长。在最极端的情况下,同时插入128个事件,且每个事件插入的位置都需要最多的搜索次数,则需要的搜索次数为128*127/2=8128次。所以,TPU占用了大量的中央处理单元(CentralProcessing Unit,简称CPU)处理时间。
另外,CPU的中断资源有限,不可能给每个事件分配一个中断,为节约资源,所有的TPU中断事件使用相同的一个中断。这就可能造成中断拥挤,为了避免中断处理冲突,可以采用以下两种处理策略一、硬件使用一个寄存器记录最近发生的几个事件。由软件辨别当前事件分布状况,如果新事件插入点事件过于紧密,超过了CPU的处理能力,则搜索最近的满足事件处理能力的位置,调整插入事件生效时间,插入事件。
二、增加额外的随机存取存储器(Random Access Memory,简称RAM)资源,用于中断嵌套时的压栈处理。对于来不及处理的中断事件,压入栈中保存,处理完前面的事件后,再从栈中取出需要处理的事件。
但这两种处理方法都有其不可避免的弱点。第一种处理策略的弱点在于,其不能够直接通过单向链表实现,如果采用双向链表,则功能上能够实现,但运算量太大,在处理时间受约束的终端处理上无法完成。第二种处理策略的弱点在于,尽管其速度快,操作简单,但占用硬件资源太大,在功耗至上的终端上,实现这样一个功能,损失功耗,得不偿失。

发明内容
鉴于以上所述的一个或多个问题,本发明提供了一种事件插入方法。
根据本发明的一种事件插入方法,包括以下步骤S102,判断将要插入事件的事件链表中的头事件和尾事件的时间;S104,根据待插入事件的时间与头事件的时间和尾事件的时间之间的关系,确定待插入事件在事件链表中的插入位置;以及S106,将待插入事件插入所确定的插入位置中。
其中,在步骤S104中,在待插入事件的时间早于头事件的时间或晚于尾事件的时间的情况下,确定待插入事件在事件链表中的插入位置在头事件之前或在尾事件之后。
其中,在待插入事件的时间在头事件的时间和尾事件的时间之间的情况下,步骤S104包括以下步骤S1042,判断头事件和尾事件之间的时间差是否小于特定值;S1044,在头事件和尾事件之间的时间差小于特定值的情况下,确定头事件在事件链表中的位置为待处理事件在事件链表中的插入位置,否则进行步骤S1046;S1046,判断头事件和尾事件之间的中间事件的时间是否晚于待插入事件的时间;以及S1048,在中间事件的时间晚于待插入事件的时间的情况下,将头事件的时间变为中间事件的时间,否则将尾事件的时间变为中间事件的时间,然后返回步骤S1042。
其中,用事件序号来表示事件时间。事件序号用事件指针数组的下标表示。
根据本发明的另一种事件插入方法,包括以下步骤S302,确定处理系统对特定数目的事件进行处理所需的最小时间;S304,根据插入待插入事件后的事件链表中的事件数目,确定待插入事件在事件链表中的插入位置;以及S306,将待插入事件插入所确定的插入位置中。
其中,在步骤S304中,在插入待插入事件后的事件链表中的事件数目小于特定数目的情况下,确定待插入事件的预插入位置为其在事件链表中的最终插入位置。
其中,在插入待插入事件后的事件链表中的事件数目大于特定数目的情况下,步骤S304包括以下步骤S3042,判断插入待插入事件后的事件链表中的临近的特定数目的事件之间的时间间距是否大于最小时间;S3044,在邻近的特定数目的事件之间的时间间距大于最小时间的情况下,确定待插入事件的预插入位置为其在事件列表中的最终插入位置,否则进行步骤S3046;S3046,判断待插入事件是否靠近帧后边界;S3048,在待插入事件靠近帧后边界的情况下,将待插入事件的预插入位置往前调整,否则将待插入事件的预插入位置往后调整,然后返回步骤S3042。
其中,对待插入事件的预插入位置进行调整的步进为最小时间。步骤S302确定的特定数目为4。
综上所述,本发明利用一些快速的搜索方法,完成了快速的搜索定位;并通过对事件时间分布做出判断,对不满足插入条件的新插入事件时间进行调整,从而保证了中断能够得到处理。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的事件插入方法的流程图;图2是图1所示方法的步骤S104的详细流程图;
图3是根据本发明另一实施例的事件插入方法的流程图;以及图4是图3所示方法的步骤S304的详细流程图。
具体实施例方式
在本发明中,利用了指针和数组的特性,并结合了TPU事件这个特定对象的特性,通过增加一个指向TPU事件类型的指针数组,利用一些快速的搜索方法,完成了快速的搜索定位;并通过使用指针数组对事件时间分布做出判断,对不满足插入条件的新插入事件时间进行调整,保证了中断能够得到处理。
数组的下标是一种可以用于计算的位置标记,直接采用事件数组和事件数组中的每一个元素,按照需要的检索顺序进行存放,可以快速计算出需要插入的位置。但是,由于每个事件的元素比较多,直接使用事件数组,每一次事件的插入和删除都会涉及大量的数据搬移操作。由搜索节省的CPU开销,被后面的数据搬移操作所抵消,甚至超越。因此,直接使用数组代替链表的方式不可行。
不可直接使用事件数组的原因在于数据的搬移需要大量的操作。再往前回溯,搬移的操作量大的原因,又是因为事件的元素太多。
指针的特点就是只保存对象的地址,访问对象时,根据对象的类型,确定对象的每个元素。指针变量的大小与对象的大小无关,只与当前CPU的地址总线位宽有关,因此采用事件指针数组替代事件数组完成排序,就能够避免数据搬移带来的大量的操作。
下面参考图1和图2,说明根据本发明实施例的事件插入方法。如图1所示,该事件插入方法包括以下步骤
S102,根据当前处理事件的位置,判断应该插入前半帧事件还是后半帧事件,由此确定出将要插入事件的事件链表中的头事件和尾事件的时间和序号;S104,根据待插入事件的时间与头事件的时间和尾事件的时间之间的关系,确定待插入事件在事件链表中的插入位置。
S106,将待插入事件插入所确定的插入位置中。
其中,在步骤S104中,在待插入事件的时间早于或者晚于头事件的事件和尾事件的时间的情况下,待插入事件序号取头事件序号之前或者尾事件序号之后,确定待插入事件的插入位置在头事件之前或尾事件之后。
其中,在待插入事件的时间在头事件的时间和尾事件的时间之间的情况下,步骤S104包括以下步骤(如图2所示)S1042,判断头事件和尾事件之间的时间差是否小于1chip,或者头事件序号与尾事件序号是否相邻。
S1044,在头事件和尾事件之间的时间差小于特定值的情况下,确定头事件在事件链表中的位置为待处理事件在事件链表中的插入位置,否则进行步骤S1046;S1046,取序号为头事件序号和尾事件序号的中间序号的中间事件,根据中间序号取出对应的时间,并判断中间事件的时间是否晚于待插入事件的时间。
S1048,在中间事件的时间早于待插入事件的时间的情况下,将尾事件序号调整为中间序号,否则将头事件序号调整为中间序号,然后返回步骤S1042。
其中,用事件序号来表示事件时间。事件序号用事件指针数组的下标表示。
下面参考图3和图4,说明根据本发明另一实施例的事件插入方法。如图3所示,该事件插入方法包括以下步骤S302,进行初始化条件确定,即确定处理系统对4个(特定数目)事件进行处理所需的最小时间。
S304,根据插入待插入事件后的事件链表中的事件数目,确定待插入事件在事件链表中的插入位置。
S306,将待插入事件插入所确定的插入位置中。
其中,在步骤S304中,在插入待插入事件后的事件链表中的事件数目小于4的情况下,确定待插入事件的预插入位置为其在事件链表中的最终插入位置。
其中,在插入待插入事件后的事件链表中的事件数目大于4的情况下,步骤S304包括以下步骤(如图4所示)S3042,判断插入待插入事件后的事件链表中的临近的任意4个事件之间的时间间距是否大于初始条件确定的最小时间。
S3044,在邻近的特定数目的事件之间的时间间距大于最小时间的情况下,确定待插入事件的预插入位置为其在事件列表中的最终插入位置,否则进行步骤S3046;S3046,判断待插入事件是否靠近帧后边界;S3048,在当前位置往前调整时间,调整步进为第一步中设置的最小间距参数。并确定当前预插入位置序号,否则在当前位置往后调整时间,调整步进为第一步中设置的最小间距参数。并确定当前预插入位置序号,然后返回步骤S3042。
其中,由于在目前的系统中,可以同时处理4个中断事件,所以将处理系统对特定数目的事件进行处理所需最小时间定为处理4个事件所需的时间。也就是说,如果当前的系统为闲置态,同一时间到达4个中断事件,系统能够处理的过来。但是超过了4个中断事件,则要求这些事件要有一定的处理间距,否则,就会造成事件的丢失。这也就是需要对待插入事件进行时间分布判断,并进行调整的原因。
也就是说,对时间的分布进行判断时,仍然可以使用指针数组进行操作。首先需要找到插入的位置,然后对插入位置周围的几个事件生效时间进行判断,从而确定是否可在当前位置插入。如果当前位置满足时间插入条件,则可以进行插入;如果不满足插入条件,则对事件插入位置和事件生效时间进行调整,再对事件分布进行判断;反复循环直到找到合适的事件插入点和事件生效时间为止。其中,事件分布的判决条件,需保证所有的事件都能够找到合适的插入点。其中,插入事件分布判断,需要考虑事件的周期性,事件的发生周期为帧。事件的首尾相连,形成一个时间环。
从以上可以看出,改进后,采用二分搜索方法,最极端的情况需要搜索的次数为(2*1+2*2+4*3+8*4+16*5+32*6+64*7)=770次,比原来的处理方法提高了10倍多。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种事件插入方法,其特征在于,包括以下步骤S102,判断将要插入事件的事件链表中的头事件和尾事件的时间;S104,根据待插入事件的时间与所述头事件的时间和所述尾事件的时间之间的关系,确定所述待插入事件在所述事件链表中的插入位置;以及S106,将所述待插入事件插入所确定的插入位置中。
2.根据权利要求1所述的事件插入方法,其特征在于,在所述步骤S104中,在所述待插入事件的时间早于所述头事件的时间或晚于所述尾事件的时间的情况下,确定所述待插入事件在所述事件链表中的插入位置在所述头事件之前或在所述尾事件之后。
3.根据权利要求1所述的事件插入方法,其特征在于,在所述待插入事件的时间在所述头事件的时间和所述尾事件的时间之间的情况下,所述步骤S104包括以下步骤S1042,判断所述头事件和所述尾事件之间的时间差是否小于特定值;S1044,在所述头事件和所述尾事件之间的时间差小于所述特定值的情况下,确定所述头事件在所述事件链表中的位置为所述待处理事件在所述事件链表中的插入位置,否则进行步骤S1046;S1046,判断所述头事件和所述尾事件之间的中间事件的时间是否晚于所述待插入事件的时间;以及S1048,在所述中间事件的时间晚于所述待插入事件的时间的情况下,将所述头事件的时间变为所述中间事件的时间,否则将所述尾事件的时间变为所述中间事件的时间,然后返回步骤S1042。
4.根据权利要求1至3中任一项所述的事件插入方法,其特征在于,用事件序号来表示事件时间。
5.根据权利要求4所述的事件插入方法,其特征在于,所述事件序号为事件指针数组的下标。
6.一种事件插入方法,其特征在于,包括以下步骤S302,确定处理系统对特定数目的事件进行处理所需的最小时间;S304,根据插入待插入事件后的事件链表中的事件数目,确定所述待插入事件在所述事件链表中的插入位置;以及S306,将所述待插入事件插入所确定的插入位置中。
7.根据权利要求6所述的事件插入方法,其特征在于,在所述步骤S304中,在插入所述待插入事件后的事件链表中的事件数目小于所述特定数目的情况下,确定所述待插入事件的预插入位置为其在所述事件链表中的最终插入位置。
8.根据权利要求6所述的事件插入方法,其特征在于,在插入所述待插入后的事件链表中的事件数目大于所述特定数目的情况下,所述步骤S304包括以下步骤S3042,判断插入所述待插入事件后的事件链表中的临近的所述特定数目的事件之间的时间间距是否大于所述最小时间;S3044,在邻近的所述特定数目的事件之间的时间间距大于所述最小时间的情况下,确定所述待插入事件的预插入位置为其在所述事件列表中的最终插入位置,否则进行步骤S3046;S3046,判断所述待插入事件是否靠近帧后边界;S3048,在所述待插入事件靠近所述帧后边界的情况下,将所述待插入事件的预插入位置往前调整,否则将所述待插入事件的预插入位置往后调整,然后返回步骤S3042。
9.根据权利要求8所述的事件插入方法,其特征在于,对所述待插入事件的预插入位置进行调整的步进为所述最小时间。
10.根据权利要求6至9中任一项所述的事件插入方法,其特征在于,所述特定数目为4。
全文摘要
本发明提供了一种事件插入方法,包括以下步骤S102,判断将要插入事件的事件链表中的头事件和尾事件的时间;S104,根据待插入事件的时间与头事件的时间和尾事件的时间之间的关系,确定待插入事件在事件链表中的插入位置;以及S106,将待插入事件插入所确定的插入位置中。本发明可以完成了快速的搜索定位;并可以保证所有中断都能够得到处理。
文档编号G06F9/46GK101060679SQ20071011074
公开日2007年10月24日 申请日期2007年6月6日 优先权日2007年6月6日
发明者龚尤岗 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1