一种中断响应方法及系统的制作方法

文档序号:9432363阅读:258来源:国知局
一种中断响应方法及系统的制作方法
【技术领域】
[0001]本发明涉及一种计算机技术,特别是涉及一种中断响应方法及系统。
【背景技术】
[0002]现有的中断系统设计方案都是基于传统的方式设计的。即CPU有单一中断输入或几个中断输入,而多个中断源共用这单一的或仅仅几个中断输入资源,通过中断控制器实现中断复用,然后当CPU接到中断信号后,会先执行中断控制器的服务程序,中断控制器顺序查找到发出中断请求的设备,然后执行相应的中断服务程序。在CPU只有单中断引脚或很少中断引脚的情况下却要担负大量中断源的响应时,就会出现系统中断执行时间过长,造成系统的整体运行效率下降,甚至造成系统的崩溃,直接影响到了系统的稳定性与流畅性。尤其是在嵌入式操作系统中,中断一直是其响应硬件设备需求的主要实现方式。嵌入式操作系统的稳定性,关系到整个产品的可靠性与用户体验,同时,中断服务系统的执行,直接关系到整个系统的执行效率,所以中断服务体系在整个系统层面都是重中之重,特别是中断复用特别多的产品中。采用现有的技术方案虽然可行,但增加了系统在执行中断时的响应与执行时间,由于中断是操作系统中最高级别的任务,它在执行,别的任务就没有办法执行,过长的中断执行时间势必造成系统整体的运行效率下降,系统的稳定性难以得到保证。
[0003]鉴于此,如何找到一种保证中断服务的稳定高效执行的中断系统设计方案就成为本领域技术人员亟待解决的问题。

【发明内容】

[0004]鉴于以上所述现有技术的缺点,本发明的目的在于提供一种中断响应方法及系统,用于解决现有技术中当存在多个中断源时中断响应效率和稳定性低的问题。
[0005]为实现上述目的及其他相关目的,本发明提供一种中断响应方法,所述中断响应方法包括:构造中断向量cache表和中断向量哈希表,中断向量cache表和中断向量哈希表都由中断向量组成,所述中断向量包括中断号、中断服务程序入口地址;中断控制器接收到中断信号,并从中断状态寄存器中获取所述中断信号对应的中断号;在中断向量cache表中查找所述中断号;当在中断向量cache表中找到所述中断号时,跳转到所述中断号所对应的中断服务程序入口地址执行。
[0006]可选地,所述中断响应方法还包括:当在中断向量cache表中未找到所述中断号时,在中断向量哈希表中查找到所述中断号,跳转到所述中断号所对应的中断服务程序入口地址执行。
[0007]可选地,所述中断响应方法还包括:清除中断状态寄存器中的中断状态。
[0008]可选地,所述中断向量还包括执行次数;所述中断响应方法还包括:当该中断向量命中时,所述中断向量的执行次数加I ;所述中断响应方法还包括:中断向量cache表定期更新:当所述中断向量cache表中执行次数最少的中断向量的执行次数小于中断向量哈希表中执行次数最多的中断向量的执行次数时,将所述中断向量cache表中执行次数最少的中断向量替换成中断向量哈希表中执行次数最多的中断向量;将所有的中断向量的执行次数清零。
[0009]可选地,所述中断向量哈希表使用hash (key)=中断号% N构造,N为设定的自然数。
[0010]本发明提供一种中断响应系统,所述中断响应系统包括:中断向量构造维护模块,用于构造中断向量cache表和中断向量哈希表,中断向量cache表和中断向量哈希表都由中断向量组成,所述中断向量包括中断号、中断服务程序入口地址;中断控制服务模块,用于接收中断信号,并从中断状态寄存器中获取所述中断信号对应的中断号;在中断向量cache表中查找所述中断号;中断服务跳转模块,用于当在中断向量cache表中找到所述中断号时,跳转到所述中断号所对应的中断服务程序入口地址执行。
[0011]可选地,中断控制服务模块还用于当在中断向量cache表中未找到所述中断号时,在中断向量哈希表中查找到所述中断号;中断服务跳转模块,还用于在中断向量哈希表中找到所述中断号时,跳转到所述中断号所对应的中断服务程序入口地址执行。
[0012]可选地,中断控制服务模块还用于:当查找到所述中断号时,清除中断状态寄存器中的中断状态。
[0013]可选地,所述中断向量还包括执行次数;所述中断向量构造维护模块还用于:当该中断向量命中时,所述中断向量的执行次数加I ;所述中断向量维护模块还用于中断向量cache表定期更新:当所述中断向量cache表中执行次数最少的中断向量的执行次数小于中断向量哈希表中执行次数最多的中断向量的执行次数时,将所述中断向量cache表中执行次数最少的中断向量替换成中断向量哈希表中执行次数最多的中断向量;将所有的中断向量的执行次数清零。
[0014]可选地,所述中断向量哈希表使用hash (key)=中断号% N构造,N为设定的自然数。
[0015]如上所述,本发明的中断响应方法及系统,具有以下有益效果:通过优化中断服务程序,缩短查找中断服务程序的时间,从而提高整个中断服务系统的运行效率。本发明就是针对多路中断复用的系统,采用新的设计方案,通过对中断控制器服务程序中,中断向量的查找方式的优化,提高中断查找命中的速度,缩短查找中断服务程序的时间,使整个中断服务系统的运行效率都得以很大的提高,进而提升系统的稳定性与流畅性,提高用户体验。尤其对于有很多中断源的嵌入式系统,效果尤为突出。本发明的技术方案能够优化中断向量的查找方式,提高中断服务系统效率。
【附图说明】
[0016]图1显示为本发明的一种中断响应方法的一实施例的流程示意图。
[0017]图2显示为本发明的一种中断响应方法的另一实施例的流程示意图。
[0018]图3显示为本发明的一种中断响应系统的一实施例的模块示意图。
[0019]元件标号说明
[0020]I中断响应系统
[0021]11 中断向量构造维护模块
[0022]12 中断控制服务模块
[0023]13中断服务跳转模块
[0024]SI ?S3 步骤
【具体实施方式】
[0025]以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的【具体实施方式】加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。
[0026]需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0027]本发明提供一种中断响应方法。在一个实施例中,如图1所示,所述中断响应方法包括:
[0028]步骤SI,构造中断向量cache表和中断向量哈希表,中断向量cache表和中断向量哈希表都由中断向量组成,所述中断向量包括中断号、中断服务程序入口地址。具体地,中断向量cache表和中断向量哈希表的记录都由中断向量组成,每个中断向量包括中断号、中断服务程序入口地址字段。在一个实施例中,由于中断向量中可用的资源比较少,本发明采用中断号作为资源来计算hash的key值。中断号由于是由小到大连续排列的,所以仅用中断号%N(N为用户根据需要自定义数值)来存储中断向量即可满足均匀分布。即中断向量哈希表使用hash (key)=中断号% N构造,N为设定的自然数。构造中断向量cash表,表大小为M项(M为用户根据需要自定义数值)。
[0029]步骤S2,所述中断控制器接收到中断信号,并从中断状态寄存器中获取所述中断信号对应的中断号。
[0030]步骤S3,在中断向量cache表中查找所述中断号;当在中断向量cache表中找到所述中断号时,跳转到所述中断号所对应的中断服务程序入口地址执行。在一个实施例中,所述中断响应方法还包括:当在中断向量cache表中未找到所述中断号时,在中断向量哈希表中查找到所述中断号,在中断向量哈希表中找到所述中断号时,跳转到所述中断号所对应的中断服务程序入口地址执行。在一个实施例中,所述中断响应方法还包括:当在中断向量cache表或中断向量哈希表中找到所述中断号时,清除中断状态寄存器中的中断状
??τ O
[0031]在一个实施例中,所述中断向量还包括执行次数;所述中断响应方法还包括:当该中断向量命中时,所述中断向量的执行次数加I ;中断向量cache表定期更新:当所述中断向量cache表中执行次数最少的中断向量的执行次数小于中断向量哈希表中执行次数最多的中断向量的执行次数时,将所述中断向量cache表中执行次数最少的中断向量替换成中断向量哈希表中执行次数最多的中断向量;将所有的中断向量的执行次数清零。具体地,中断向量cache表和中断向量哈希表的记录都由中断向量组成,每个中断向量cache表和中断向量哈希表的记录(中断向量)包括中断号、中断服务程序入口地址、执行次数字段。在一个实施例中,构造中断向量cash表维护任务,此任务每隔L时间(定期,L的时长根据系统以及用户需要确定)启动一次(进行中断向量cache表更新),找出中断向量cash表中哪个中断向量在一个启动周期(即L时间)中执行次数最少,再找出中断向量哈希表中哪个中断向量在这个启动周期中执行次数最多(获取L时间内中断向量cache表执行次数最小的中断向量次数,记为A ;中断向量哈希表中执行次数最多的中断向量次数,记为B),然后比较这两个值,如果中断向量哈希表中的数值大于cache表中的数值(B>A),则删除掉cache表中的这个中断向量,并替换成哈希表中的这个中断向量;如果中断向量哈希表中的数值不大于cache表中的数值(B〈 = A),则不修改中断向量cache表。最后,清空所有两表中的中断向量的执行次数位,进入下一个L时间的计数周期。
[0032]在一个实施例中,如图2所示,中断控制器在得到CPU中断输入源发送的中断信号后,就会跳转到中断控制器的服务程序中执行。中断控制器的终端控制器服务程序会去读取中断状态寄存器,获取到哪个设备发出中断请求,即中断号。接下来,中断控制器的服务程序会先查找使用频度高的中断向量cache表,命中,则直接跳转到中断号所对应的中断服务程序入口地址(设备中
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1