一种中断执行方法及装置制造方法

文档序号:6628799阅读:95来源:国知局
一种中断执行方法及装置制造方法
【专利摘要】本申请实施例提供了一种中断执行方法及装置,通过确定当前负载非最大的CPU核、以及负载非最大的时钟源的方式,由当前负载非最大的CPU核、以负载非最大的时钟为中断定时器,执行第一中断,所以,与现有技术相比,可以降低中断被延时响应的可能性。
【专利说明】一种中断执行方法及装置

【技术领域】
[0001] 本申请涉及计算机领域,尤其涉及一种中断执行方法及装置。

【背景技术】
[0002] 基于对称多处理结构(Symmetric Multi-Processing,SMP)多核CPU架构上广泛 使用的通用操作系统如Linux、Windows、Vxworks等,对定时中断的管理普遍采用固定中断 源(HPET)的分配方式,即使用者在申请前必须确定本中断所绑定的定时器中断源,且用于 中断响应的CPU核也是共享或随机的。
[0003] 在这种机制下,在中断被执行时,如果本中断所绑定的定时器同时负责其它中断 计时、或者执行此中断的CPU核上的任务过多,使得定时器或者CPU无暇顾及本中断,从而 导致本中断响应延时的问题。
[0004] 申请内容
[0005] 本申请实施例提供了一种中断执行方法及装置,目的在于解决中断响应延时的问 题。
[0006] 为了实现上述目的,本申请实施例提供了以下技术方案:
[0007] -种中断执行方法,包括:
[0008] 从多个CPU核中,确定当前负载非最大的CPU核;
[0009] 从多个时钟源中,选定当前负载非最大的第一时钟源;
[0010] 由所述当前负载非最大的CPU核、以所述第一时钟为中断定时器,执行第一中断。
[0011] 可选地,所述从多个CPU核中,确定当前负载非最大的CPU核包括:
[0012] 按照先扫描执行中断任务的CPU核,后扫描执行非中断任务的CPU核的顺序:统计 (PU核i上的中断源许可标识和任务节点,CPU核i的被占用权值=中断源许可标识的数量 *第一数值+任务节点的数量*第二数值,其中,所述第一数值和所述第二数值均大于1,i =1、2……N,N为大于1的整数,表示系统中CPU核的数量;
[0013] 确定所述N个CPU核中、被占用权值最小的CPU核为当前负载最小的CPU核。
[0014] 可选地,所述从多个时钟源中,选定第一时钟源包括:
[0015] 按照先扫描独占时钟源后扫描共享时钟源的顺序:统计时钟源i的状态标识,钟 源i的空闲权值=未被使用状态标识的数量*第三数值+未被共享状态标识的数量*第四 数值,其中,所述第三数值和所述第四数值均大于1,i = 1、2……M,Μ为大于1的整数,表 示系统中CPU时钟源的数量;
[0016] 从所述Μ个时钟源中,选择空闲权值最大的时钟源为当前负载最小的第一时钟 源。
[0017] 可选地,在所述由所述当前负载非最大的CPU核、以所述第一时钟为中断定时器, 执行第一中断之前,还包括:
[0018] 将所述当前负载最小的CPU核注册的非第一中断过程的其它任务迁移到其它CPU 核上。
[0019] 可选地,所述从多个CPU核中,确定当前负载非最大的CPU核,从多个时钟源中,选 定当前负载非最大的第一时钟源包括:
[0020] 以预设周期,确定当前负载最小的CPU核,从多个时钟源中,选定当前负载最小的 第一时钟源。
[0021] 一种中断执行装置,包括:
[0022] CPU确定模块,用于从多个CPU核中,确定当前负载非最大的CPU核;
[0023] 时钟选定模块,用于从多个时钟源中,选定当前负载非最大的第一时钟源;
[0024] 中断执行模块,用于由所述当前负载非最大的CPU核、以所述第一时钟为中断定 时器,执行第一中断。
[0025] 可选地,所述CPU确定模块包括:
[0026] 第一计算单元,用于按照先扫描执行中断任务的CPU核,后扫描执行非中断任务 的CPU核的顺序:统计CPU核i上的中断源许可标识和任务节点,CPU核i的被占用权值= 中断源许可标识的数量*第一数值+任务节点的数量*第二数值,其中,所述第一数值和所 述第二数值均大于1,i = 1、2……N,N为大于1的整数,表示系统中CPU核的数量;
[0027] 第一确定单元,用于确定所述N个CPU核中、被占用权值最小的CPU核为当前负载 最小的CPU核。
[0028] 可选地,所述时钟选定模块包括:
[0029] 第二计算单元,用于按照先扫描独占时钟源后扫描共享时钟源的顺序:统计时钟 源i的状态标识,钟源i的空闲权值=未被使用状态标识的数量*第三数值+未被共享状 态标识的数量*第四数值,其中,所述第三数值和所述第四数值均大于1,i = 1、2……M,Μ 为大于1的整数,表示系统中CPU时钟源的数量;
[0030] 第二确定单元,用于从所述Μ个时钟源中,选择空闲权值最大的时钟源为当前负 载最小的第一时钟源。
[0031] 可选地,还包括:
[0032] 迁移模块,用于在所述由所述当前负载非最大的CPU核、以所述第一时钟为中断 定时器,执行第一中断之前,将所述当前负载最小的CPU核注册的非第一中断过程的其它 任务迁移到其它CPU核上。
[0033] 可选地,所述CPU确定模块,用于从多个CPU核中,确定当前负载非最大的CPU核 包括:
[0034] 所述CPU确定模块具体用于,以预设周期、从多个CPU核中,确定当前负载最小的 (PU 核;
[0035] 所述时钟选定模块,用于从多个时钟源中,选定当前负载非最大的第一时钟源包 括:
[0036] 所述时钟选定模块具体用于,以预设周期、从多个时钟源中,选定当前负载最小的 第一时钟源。
[0037] 本申请实施例所述的中断执行方法及装置,通过确定当前负载非最大的CPU核、 以及负载非最大的时钟源的方式,由当前负载非最大的CPU核、以负载非最大的时钟为中 断定时器,执行第一中断,所以,与现有技术相比,可以降低中断被延时响应的可能性。

【专利附图】

【附图说明】
[0038] 为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以 根据这些附图获得其他的附图。
[0039] 图1为本申请实施例公开的一种中断执行方法的流程图;
[0040] 图2为本申请实施例公开的又一种中断执行方法的流程图;
[0041] 图3为本申请实施例公开的又一种中断执行方法的流程图;
[0042] 图4为本申请实施例公开的一种中断执行装置的结构示意图。

【具体实施方式】
[0043] 本申请实施例公开了一种中断执行方法及装置,可以应用于基于对称多处理结构 (Symmetric Multi-Processing, SMP)多核CPU架构上广泛使用的通用操作系统如Linux、 Windows、Vxworks等,可以应用在大型复杂业务模型的多模型并发集群仿真或特殊定制平 台的高精度实时仿真这两种应用场景中,在通用平台上实现〇. 〇5mS-lmS之间的系统仿真 周期。
[0044] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于 本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例,都属于本申请保护的范围。
[0045] 本申请实施例公开的一种中断执行方法,如图1所示,包括以下步骤:
[0046] S101 :从多个CPU核中,确定当前负载非最大的CPU核;
[0047] S102 :从多个时钟源中,选定负载非最大的第一时钟源;
[0048] 本实施例中,所述时钟可以为高精度时钟。
[0049] S103 :由所述当前负载非最大的CPU核、以所述第一时钟为中断定时器,执行第一 中断。
[0050] 在现有技术中,需要上层编程人员为中断指定时钟源,且执行中断的CPU核为共 享或随机分配的,因为系统中的时钟源和CPU核通常情况下执行多线任务,所以,在时钟源 或者CPU核负载过大的情况下,其剩余资源不足以支撑中断的执行,则会暂缓执行中断,待 其被占用的资源被释放后,才能执行中断,因此,中断会被延迟执行,从而对终端响应的实 时性产生延迟时间漂移,给系统的响应速度带来很大的不确定性。
[0051] 而本实施例所述方法,由当前负载非最大的CPU核、以负载非最大的时钟为中断 定时器,执行第一中断,因此,能够避免对负载最大的CPU和以及时钟源的使用,从而有效 避免中断被延时的情况。
[0052] 在上述实施例中,为了达到避免中断被延时执行的最优效果,可以选择负载最小 的CPU核及时钟源,本申请实施例公开的又一种中断执行方法,如图2所示,包括步骤:
[0053] S201 :按照先扫描执行中断任务的CPU核,后扫描执行非中断任务的CPU核的顺 序:统计CPU核i上的中断源许可标识和任务节点;
[0054] 其中,i = 1、2......N,N为大于1的整数,表示系统中CPU核的数量。
[0055] S202 :计算CPU核i的被占用权值=中断源许可标识的数量*第一数值+任务节 点的数量*第二数值;
[0056] 其中,所述第一数值和所述第二数值均大于1,本实施例中,第一数值可以为10, 第二数值可以为5。从计算被占用权值的公式可以看出,被占用权值越大,CPU核的负载越 大。
[0057] S203 :确定所述N个CPU核中、被占用权值最小的CPU核为当前负载最小的CPU 核;
[0058] S204 :按照先扫描独占时钟源后扫描共享时钟源的顺序,统计时钟源i的状态标 识;
[0059] 其中,i = 1、2......M,Μ为大于1的整数,表示系统中CPU时钟源的数量。
[0060] S205 :计算钟源i的空闲权值=未被使用状态标识的数量*第三数值+未被共享 状态标识的数量*第四数值;
[0061] 其中,所述第三数值和所述第四数值均大于1,本实施例中,第三数值和第四数值 都可以为10。从上述计算空闲权值的公式可以看出,空闲权值越大,时钟源的负载越小。
[0062] S206 :从所述Μ个时钟源中,选择空闲权值最大的时钟源为负载最小的第一时钟 源;
[0063] S207 :由当前负载最小的CPU核、以第一时钟为中断定时器,执行第一中断。
[0064] 本实施例中,因为执行中断的CPU核的负载在系统中所有的CPU核中最小,时钟源 的负载同样为系统中多个时钟源中最小,因此,能够最下限度提升中断执行的实时控制精 度。
[0065] 并且,因为依据负载选用CPU核和时钟源,所以,使得仿真模型编程人员可以从为 中断分配时钟源和CPU核的工作中解脱出来,对编程人员的操作系统平台业务知识的要求 更低,从而使得仿真平台的应用更为便捷。
[0066] 图3为本申请实施例公开的又一种中断执行方法,包括:
[0067] S301 :以预设周期,确定当前负载最小的CPU核,并从多个时钟源中,选定第一时 钟源;
[0068] 确定当前负载最小的CPU核以及选定第一时钟源的方法可以参见上述实施例,这 里不再赘述。
[0069] 本实施例中,以预设周期确定当前负载最小的CPU核以及选定第一时钟源,可以 使得系统保持对CPU核以及时钟源的负载的监控,在需要进行中断时,可以更快地确定出 当前负载最小的CPU核以及第一时钟源,从而更能够保证中断控制的实时性。
[0070] S302 :将所述当前负载最小的CPU核注册的非第一中断过程的其它任务迁移到其 它CPU核上;
[0071] 此步骤的优点在于,当前负载最小的CPU核上的其它任务启动时,可能会造成此 (PU核的繁忙,从而增大此CPU核的负载,在此情况下,由此CPU核的执行的中断可能还有被 延时或丢失,而将其中的其它任务迁出,则可以避免上述问题。
[0072] S303 :由所述当前负载最小的CPU核、以所述第一时钟为中断定时器,执行第一中 断。
[0073] 本实施例所述的方法,对系统中的CPU核和时钟源的负载情况进行周期性监控, 并且对负载最小的CPU核进行了进一步优化,更能保证中断的实时控制。
[0074] 申请人:在研究的过程中通过仿真发现,本申请中实施例所述方法,实现方式灵活 高效,在不损害系统架构和兼容性的前提下,可以将系统仿真模型的实时调度时间控制在 uS级的水平。在大型通用平台上实现了传统的小型定制平台才能达到的控制级别,且能凸 显通用平台的多模型并行仿真解算和与仿真软件工具平台保持最大程度的兼容性的优势。
[0075] 与上述方法实施例相对应的,本申请实施例还公开了一种中断执行装置,如图4 所示,包括:
[0076] CPU确定模块401,用于从多个CPU核中,确定当前负载非最大的CPU核;
[0077] 时钟选定模块402,用于从多个时钟源中,选定负载非最大的第一时钟源;
[0078] 具体地,CPU确定模块可以以预设周期、从多个CPU核中,确定当前负载最小的CPU 核,所述时钟选定模块也可以以预设周期、从多个时钟源中,选定负载最小的第一时钟源。
[0079] 中断执行模块403,用于由所述当前负载非最大的CPU核、以所述第一时钟为中断 定时器,执行第一中断。
[0080] 其中,可选地,所述CPU确定模块401可以具体包括:
[0081] 第一计算单元4011,用于按照先扫描执行中断任务的CPU核,后扫描执行非中断 任务的CPU核的顺序:统计CPU核i上的中断源许可标识和任务节点,CPU核i的被占用权 值=中断源许可标识的数量*第一数值+任务节点的数量*第二数值,其中,所述第一数值 和所述第二数值均大于1,i = 1、2……N,N为大于1的整数,表示系统中CPU核的数量;
[0082] 第一确定单元4012,用于确定所述N个CPU核中、被占用权值最小的CPU核为当前 负载最小的CPU核。
[0083] 所述时钟选定模块402包括:
[0084] 第二计算单元4021,用于按照先扫描独占时钟源后扫描共享时钟源的顺序:统计 时钟源i的状态标识,钟源i的空闲权值=未被使用状态标识的数量*第三数值+未被共 享状态标识的数量*第四数值,其中,所述第三数值和所述第四数值均大于l,i = 1、2…… M,Μ为大于1的整数,表示系统中CPU时钟源的数量;
[0085] 第二确定单元4022,用于从所述Μ个时钟源中,选择空闲权值最大的时钟源为第 一时钟源。
[0086] 进一步地,本实施例所述装置,还可以包括:迁移模块404,用于在所述由所述当 前负载非最大的CPU核、以所述第一时钟为中断定时器,执行第一中断之前,将所述当前负 载最小的CPU核注册的非第一中断过程的其它任务迁移到其它CPU核上。
[0087] 本申请实施例所述的中断执行装置,通过确定当前负载非最大的CPU核、以及负 载非最大的时钟源的方式,由当前负载非最大的CPU核、以负载非最大的时钟为中断定时 器,执行第一中断,所以,与现有技术相比,可以降低中断被延时响应的可能性。
[0088] 本申请实施例方法所述的功能如果以软件功能单元的形式实现并作为独立的产 品销售或使用时,可以存储在一个计算设备可读取存储介质中。基于这样的理解,本申请实 施例对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来, 该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算设备(可以是个人计 算机,服务器,移动计算设备或者网络设备等)执行本申请各个实施例所述方法的全部或 部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM, Read-Only Memory)、 随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的 介质。
[0089] 本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它 实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
[0090] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的 一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请 将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。
【权利要求】
1. 一种中断执行方法,其特征在于,包括: 从多个CPU核中,确定当前负载非最大的CPU核; 从多个时钟源中,选定当前负载非最大的时钟源为第一时钟源; 由所述当前负载非最大的CPU核、以所述第一时钟源为中断定时器,执行第一中断。
2. 根据权利要求1所述的方法,其特征在于,所述从多个CPU核中,确定当前负载非最 大的CPU核包括: 按照先扫描执行中断任务的CPU核,后扫描执行非中断任务的CPU核的顺序:统计CPU 核i上的中断源许可标识和任务节点,CPU核i的被占用权值=中断源许可标识的数量* 第一数值+任务节点的数量*第二数值,其中,所述第一数值和所述第二数值均大于1,i = 1、2……N,N为大于1的整数,表示系统中CPU核的数量; 确定所述N个CPU核中、被占用权值最小的CPU核为当前负载最小的CPU核。
3. 根据权利要求1或2所述的方法,其特征在于,所述从多个时钟源中,选定第一时钟 源包括: 按照先扫描独占时钟源后扫描共享时钟源的顺序:统计时钟源i的状态标识,钟源i的 空闲权值=未被使用状态标识的数量*第三数值+未被共享状态标识的数量*第四数值, 其中,所述第三数值和所述第四数值均大于l,i = 1、2……M,M为大于1的整数,表示系统 中CPU时钟源的数量; 从所述Μ个时钟源中,选择空闲权值最大的时钟源为当前负载最小的第一时钟源。
4. 根据权利要求3所述的方法,其特征在于,在所述由所述当前负载非最大的CPU核、 以所述第一时钟为中断定时器,执行第一中断之前,还包括: 将所述当前负载最小的CPU核注册的非第一中断过程的其它任务迁移到其它CPU核 上。
5. 根据权利要求4所述的方法,其特征在于,所述从多个CPU核中,确定当前负载非最 大的CPU核,从多个时钟源中,选定当前负载非最大的第一时钟源包括 : 以预设周期,确定当前负载最小的CPU核,从多个时钟源中,选定当前负载最小的第一 时钟源。
6. -种中断执行装置,其特征在于,包括: (PU确定模块,用于从多个CPU核中,确定当前负载非最大的CPU核; 时钟选定模块,用于从多个时钟源中,选定当前负载非最大的第一时钟源; 中断执行模块,用于由所述当前负载非最大的CPU核、以所述第一时钟为中断定时器, 执行第一中断。
7. 根据权利要求6所述的装置,其特征在于,所述CPU确定模块包括: 第一计算单元,用于按照先扫描执行中断任务的CPU核,后扫描执行非中断任务的CPU 核的顺序:统计CPU核i上的中断源许可标识和任务节点,CPU核i的被占用权值=中断源 许可标识的数量*第一数值+任务节点的数量*第二数值,其中,所述第一数值和所述第二 数值均大于1,i = 1、2……N,N为大于1的整数,表示系统中CPU核的数量; 第一确定单元,用于确定所述N个CPU核中、被占用权值最小的CPU核为当前负载最小 的CPU核。
8. 根据权利要求6或7所述的装置,其特征在于,所述时钟选定模块包括: 第二计算单元,用于按照先扫描独占时钟源后扫描共享时钟源的顺序:统计时钟源i 的状态标识,钟源i的空闲权值=未被使用状态标识的数量*第三数值+未被共享状态标 识的数量*第四数值,其中,所述第三数值和所述第四数值均大于l,i = 1、2……M,M为大 于1的整数,表示系统中CPU时钟源的数量; 第二确定单元,用于从所述Μ个时钟源中,选择空闲权值最大的时钟源为当前负载最 小的第一时钟源。
9. 根据权利要求8所述的装置,其特征在于,还包括: 迁移模块,用于在所述由所述当前负载非最大的CPU核、以所述第一时钟为中断定时 器,执行第一中断之前,将所述当前负载最小的CPU核注册的非第一中断过程的其它任务 迁移到其它CPU核上。
10. 根据权利要求8所述的装置,其特征在于,所述CPU确定模块,用于从多个CPU核 中,确定当前负载非最大的CPU核包括: 所述CPU确定模块具体用于,以预设周期、从多个CPU核中,确定当前负载最小的CPU 核; 所述时钟选定模块,用于从多个时钟源中,选定当前负载非最大的第一时钟源包括: 所述时钟选定模块具体用于,以预设周期、从多个时钟源中,选定当前负载最小的第一 时钟源。
【文档编号】G06F15/16GK104216779SQ201410508608
【公开日】2014年12月17日 申请日期:2014年9月28日 优先权日:2014年9月28日
【发明者】阚宏伟 申请人:北京经纬恒润科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1