一种中断处理方法、系统及设备
技术领域
本发明一般地涉及计算机领域,更具体地涉及中断处理方法、系统及设备。
背景技术
在高性能设备中,中断频繁的设备由于中断太密集,会造成的系统开销比较大的问题。目前的解决方法主要有:提高硬件的处理速度,加快硬件处理中断的速度;优化系统软件,减少中断的发出和处理,避免中断频繁产生。
如图1所示为现有技术中中断处理方法的示意图。如图1所示,目前设备中一次典型的中断操作流程为软件发出读写请求,然后硬件进行数据传输,传输完成后发出中断,软件响应中断后发出下一次请求。考虑到软件采用多线程方式可以不断的发出请求,所以从软件发出请求到硬件处理请求的时间可以忽略不计。其它时间段包括:IO请求处理时间,图中标注为硬件处理时间,或称传输时间(transfer time);系统通知响应中断时间,图中标注为通知时间(notify time);以及中断处理函数处理时间,图中标注为函数处理时间(handle time),上述时间分解如图1所示。
假设硬件IO处理时间(transfer)、系统通知响应中断时间(notify)和中断处理函数处理时间(handle)三段时间分别是4μs、4μs和1μs。从图1中可以看出,一次操作过程中,总的时间中有4μs用在了响应中断上,在整个中断处理中占了很大的比例。
因此,目前需要一种高效的中断处理方法,能够提高系统的处理效率。
发明内容
为了解决上述问题之一,本发明提出了一种中断处理方法,包括以下步骤:存储设备对中央处理器发出的读写请求进行硬件处理;存储设备将硬件处理完成的读写请求存储在寄存器中;中央处理器根据寄存器对硬件处理完成的读写请求进行中断函数处理。
根据本发明的实施例,在存储设备对中央处理器发出的第一次读写请求进行硬件处理之后,存储设备将硬件处理完成的第一次读写请求通知中央处理器。
根据本发明的实施例,存储设备将硬件处理完成的第一次读写请求通知中央处理器的步骤之后还包括:中央处理器根据通知对第一次读写请求进行中断函数处理。
根据本发明的实施例,中断函数处理包括:在上一个读写请求的中断处理函数退出前,查询寄存器中是否存在硬件处理完成的读写请求;如果寄存器中存在硬件处理完成的读写请求,则对硬件处理完成的读写请求进行中断处理函数处理;如果寄存器中不存在硬件处理完成的读写请求,则退出中断处理函数。
本发明还提出了一种中断处理系统,包括中央处理器和存储设备,其中,存储设备用于对中央处理器发出的读写请求进行硬件处理,并将硬件处理完成的读写请求存储在寄存器中;中央处理器用于向存储设备发送读写请求,并根据寄存器对硬件处理完成的读写请求进行中断函数处理。
根据本发明的实施例,中央处理器还用于在上一个读写请求的中断处理函数退出前,查询寄存器中是否存在硬件处理完成的读写请求;如果寄存器中存在硬件处理完成的读写请求,则对硬件处理完成的读写请求进行中断处理函数处理;如果寄存器中不存在硬件处理完成的读写请求,则退出中断处理函数。
本发明还提出了一种存储设备,包括请求接收模块、硬件处理模块和寄存器。其中,请求接收模块用于接收中央处理器发出的读写请求;硬件处理模块用于对读写请求进行硬件处理;寄存器用于保存硬件处理模块处理完成的读写请求。
根据本发明的实施例,该存储设备还包括中断产生模块,中断产生模块用于在硬件处理模块对中央处理器发出的第一次读写请求进行硬件处理之后,将硬件处理完成的读写请求通知中央处理器。
本发明还提出了一种中央处理器,包括请求模块、函数处理模块。其中,请求模块用于对存储设备发出读写请求;函数处理模块用于根据存储设备中的寄存器对硬件处理完成的读写请求进行中断函数处理。
根据本发明的实施例,该中央处理器还包括中断响应模块,其用于接收存储设备对请求模块发出的第一次读写请求进行硬件处理之后发出的通知,并根据通知对读写请求进行中断函数处理。
本发明所提出的中断处理方法、系统及设备隐藏了中断处理过程中的中断通知时间,提高了系统的吞吐率。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为现有技术的中断处理方法的时间分解示意图;
图2为根据本发明的一个实施例的中断处理方法的流程图;
图3为根据本发明的一个实施例的对于第一次读写请求的中断处理方法的流程图;
图4为根据本发明的一个实施例的中断处理方法的时间分解示意图;
图5为根据本发明的一个实施例的系统的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
如图2所示为本发明的一个实施例的中断处理方法200的流程图。实施该方法时,可以在硬件中添加寄存器,记录是否有新的IO(读写)请求被处理完。如图2所示,该中断处理方法200包括以下步骤:
S201:存储设备对中央处理器发出的读写请求进行硬件处理;
S202:存储设备将硬件处理完成的读写请求存储在寄存器中;
S203:中央处理器根据寄存器对硬件处理完成的读写请求进行中断函数处理。
作为本发明的一个实施例,该步骤可以包括:
在上一个读写请求的中断处理函数退出前,查询寄存器中是否存在硬件处理完成的读写请求:
如果寄存器中存在硬件处理完成的读写请求,则对硬件处理完成的读写请求进行中断处理函数处理;
如果寄存器中不存在硬件处理完成的读写请求,则退出中断处理函数。
作为本发明的一个实施例,在对中央处理器发出的第一次读写请求进行处理时,可以按照如图3所示的方法,该方法300包括以下步骤:
S301:存储设备对中央处理器发出的第一次读写请求进行硬件处理;
S302:存储设备将硬件处理完成的第一次读写请求通知中央处理器;
S303:中央处理器根据通知对第一次读写请求进行中断函数处理。
在对第一次读写请求进行中断处理时,也可以采用领域内常用的其他中断处理方法。
如图4所示为根据本发明的一个实施例的中断处理方法的时间分解示意图。如图4所示,第一个IO请求完成后,通知系统响应中断。接着硬件就可以进行第二个IO请求的处理,而不像传统处理中,要等到中断处理函数处理完成。处理完成后,在寄存器中记录该完成的请求。在硬件处理第二个请求处理的同时,第一个IO请求的通知和中断函数处理可以同时进行。第一个请求的中断处理函数在退出前,会读寄存器,查询是否有新的IO请求被硬件处理完成,如果查询到第二次IO传送的完成,这样第二次IO处理就不需要再经过系统的通知时间,整个系统的处理效率就可以得到提高。
表1:中断处理时间表
时间段 |
硬件处理请求时间 |
系统通知响应中断时间 |
中断处理函数 |
0-4 |
请求1transfer |
|
|
4-8 |
请求2transfer |
请求1notify |
|
8-9 |
|
|
处理请求1,2 |
如表1所示为中断处理时间表,在0-4μs这段时间,第一个请求被硬件处理。在4-8μs,请求1处理完成后发出中断,系统通知中断处理函数处理中断,请求2可以同时得到处理。在8-9μs,中断处理函数处理请求1发出的中断,在退出中断处理函数前,如果查询到请求2完成,就处理请求2。这样通过查询将两个完成的请求在同一个中断处理函数中处理,就节约了一次通知的时间。
本发明的实施例所述的方法通过合并中断处理,隐藏了中断通知的时间,提高了系统的效率。
如图5所示为根据本发明的一个实施例的中断处理系统的结构示意图。该系统包括存储设备51和中央处理器52。其中,存储设备51用于对中央处理器52发出的读写请求进行硬件处理,并将硬件处理完成的读写请求存储在寄存器中。中央处理器52用于向存储设备51发送读写请求,并根据寄存器对硬件处理完成的读写请求进行中断函数处理。
如图5所示,存储设备51包括请求接收模块511、硬件处理模块512和寄存器513。其中,请求接收模块511用于接收中央处理器发出的读写请求,硬件处理模块512用于对读写请求进行硬件处理,寄存器513用于保存硬件处理模块处理完成的读写请求。
作为本发明的一个实施例,存储设备51还包括中断产生模块514,中断产生模块514用于在硬件处理模块512对中央处理器52发出的第一次读写请求进行硬件处理之后,将硬件处理完成的读写请求通知中央处理器52。
中央处理器52包括请求模块521和函数处理模块522。其中,请求模块521用于对存储设备51发出读写请求,函数处理模块522用于根据存储设备51中的寄存器513对硬件处理完成的读写请求进行中断函数处理。
作为本发明的一个实施例,中央处理器52还包括中断响应模块523,其用于接收存储设备51对请求模块521发出的第一次读写请求进行硬件处理之后发出的通知,并根据该通知对读写请求进行中断函数处理。
当然,上述仅是本发明的一种具体实施例,在中断处理过程中,对于不同的硬件处理时间、通知响应时间和中断函数处理时间,也可以采用本发明的技术方案。另外,在中断处理整个过程中的其他阶段,也可以采用本发明所述的隐藏通知时间的方式来缩短中断处理时间,而不是固定在中断处理函数过程中采用这种策略。
本发明提出的中断处理方法、系统及设备减少了通知机制所占的时间,采用合并中断的方式对中断处理过程进行了优化,隐藏了中断过程中的中断通知时间,大幅度提高了整个系统的吞吐率,适用于所有中断频繁的设备。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。