一种微处理器的软件模拟器的事件队列的管理方法及系统的制作方法_3

文档序号:8339357阅读:来源:国知局
0064]该数组设置单元设置的循环数组的大小,主要是根据软件模拟器模拟过程中生成的事件的最大触发延迟时钟周期来确定。假设模拟过程中生成的事件的最大触发延迟为m个时钟周期,则该数组大小设为m+1 ;m为大于等于I的整数。
[0065]本发明的微处理器的软件模拟器的事件队列的管理系统,还可以包括查找单元,设置为检测全局周期指针指向的当前表项。如果全局周期指针所指向的当前表项内的头指针不为空,则按序触发头指针指向的线性链表中的所有事件。
[0066]本发明的微处理器的软件模拟器的事件队列的管理系统,还可以包括用于插入新事件的插入单元。插入单元在插入新事件时,根据新事件的触发周期确定该新事件所对应的目标表项。然后将该新事件插入到该目标表项所对应的线性链表中。
[0067]如图4所示,该系统还可以包括剔除单元440,与存储单元410相连,设置将从事件队列中剔除的事件节点存储在预设的空闲池中。
[0068]在有空闲池的情况下,插入单元在插入新事件时,首先检查空闲池。在空闲池为空时,向系统申请内存并根据新事件的触发周期来确定新事件所对应的目标表项,将该新事件插入到目标表项所对应的线性链表中。如果空闲池不为空,则从空闲池的头指针处取出一个空闲事件节点来存储该新事件。
[0069]当前时钟周期的模拟结束后,该剔除单元将当前时钟周期对应表项所对应的线性链表从头部摘除并链入所述空闲池的尾部,并将当前时钟周期对应表项的头指针和尾指针置为空。
[0070]本发明的实施例使用循环数组作为事件队列,根据模拟过程中所有事件的最大触发延迟周期m设置数组大小设为m+1,可以保证模拟过程中生成的所有事件都能够得到处理。因此,本发明的事件队列大小可以预先确定。克服了现有技术中事件队列无法预知大小的不足。
[0071]本发明的实施例对于新生成的事件,按照其触发延迟将其插入到相应表项的线性链表中。在每个周期开始,只需按序激活全局周期指针指向的事件队列表项所指向的线性链表就可以了,不需要查找所有线性链表,显著提高了查询效率。
[0072]本发明的实施例采用事件延迟剔除技术,大大提高了剔除效率。具体地,在每个模拟周期结束后,一次性剔除本周期整个事件线性链表,大大提高了事件剔除的效率。
[0073]本发明的实施例采用空闲池缓存曾经分配过的事件节点,不需要频繁地申请/释放内存,大大减少了申请分配/释放内存块的操作,可以显著地提高模拟速度。
[0074]本领域的技术人员应该明白,上述的本发明实施例所提供的系统的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0075]虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明技术方案而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【主权项】
1.一种微处理器的软件模拟器的事件队列的管理方法,包括: 将事件队列存储在循环数组中;所述循环数组中包含多个表项,每个表项对应所述软件模拟器的一个时钟周期; 将所述循环数组中的每个表项与预设的线性链表一一对应,每个表项的头指针和尾指针分别指向对应线性链表的头元素和尾元素;每个线性链表存储应该在对应表项所代表的时钟周期内触发的事件; 将全局周期指针指向当前时钟周期所对应的表项; 当一个时钟周期模拟结束后,将所述全局周期指针前进一个表项。
2.根据权利要求1所述的方法,其中: 根据所述软件模拟器模拟过程中生成的事件的最大触发延迟时钟周期确定所述循环数组的大小。
3.根据权利要求1所述的方法,其中,该方法包括: 在查找事件时,检测所述全局周期指针指向的当前表项; 若所述全局周期指针所指向的当前表项内的头指针不为空,则按序触发头指针指向的线性链表中的所有事件。
4.根据权利要求1所述的方法,其中,该方法包括: 在插入新事件时,根据所述新事件的触发周期确定所述新事件所对应的目标表项;将所述新事件插入到所述目标表项所对应的线性链表中。
5.根据权利要求1所述的方法,其中,该方法包括: 从所述事件队列中剔除的事件节点存储在预设的空闲池中。
6.根据权利要求5所述的方法,其中,该方法包括: 在插入新事件时,检查所述空闲池; 所述空闲池为空时,申请内存并根据所述新事件的触发周期确定所述新事件所对应的目标表项,将所述新事件插入到所述目标表项所对应的线性链表中; 所述空闲池不为空时,从所述空闲池的头指针处取出一个空闲事件节点存储所述新事件。
7.根据权利要求5或6所述的方法,其中,该方法包括: 当前时钟周期的模拟结束后,将所述当前时钟周期对应表项所对应的线性链表从头部摘除并链入所述空闲池的尾部,并将所述当前时钟周期对应表项的头指针和尾指针置为空。
8.一种微处理器的软件模拟器的事件队列的管理系统,包括: 存储单元,设置为将事件队列存储在循环数组中;所述循环数组中包含多个表项,每个表项对应一个所述软件模拟器的一个时钟周期; 对应单元,设置为将所述循环数组中的每个表项与预设的线性链表一一对应,每个表项的头指针和尾指针分别指向对应线性链表的头元素和尾元素;每个线性链表存储应该在对应表项所代表的时钟周期内触发的事件; 指向单元,设置为将全局周期指针指向当前时钟周期所对应的表项;以及,当一个时钟周期模拟结束后,将所述全局周期指针前进一个表项。
9.根据权利要求8所述的系统,其中,该系统包括: 剔除单元,设置将从所述事件队列中剔除的事件节点存储在预设的空闲池中。
10.根据权利要求8所述的系统,其中: 所述数组设置单元设置的所述循环数组的大小,根据所述软件模拟器模拟过程中生成的事件的最大触发延迟时钟周期确定。
【专利摘要】本发明公开了一种微处理器的软件模拟器的事件队列的管理方法及系统,克服现有技术中微处理器的软件模拟器的事件队列的效率低下的不足。该方法包括:将事件队列存储在循环数组中;所述循环数组中包含多个表项,每个表项对应所述软件模拟器的一个时钟周期;将所述循环数组中的每个表项与预设的线性链表一一对应,每个表项的头指针和尾指针分别指向对应线性链表的头元素和尾元素;每个线性链表存储应该在对应表项所代表的时钟周期内触发的事件;将全局周期指针指向当前时钟周期所对应的表项;当一个时钟周期模拟结束后,将所述全局周期指针前进一个表项。本发明的实施例在事件插入、事件查询和事件剔除方面都具有很高的效率。
【IPC分类】G06F9-455, G06F9-28
【公开号】CN104657108
【申请号】CN201510081271
【发明人】罗浩, 林绅文, 卫冰洁, 吴志刚, 贺欣, 杜雄杰, 张树壮, 李应博, 王啸, 刘成, 袁媛, 房婧, 于贺威
【申请人】北京邮电大学, 国家计算机网络与信息安全管理中心
【公开日】2015年5月27日
【申请日】2015年2月15日
当前第3页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1