一种cpu核运行方法及装置的制作方法

文档序号:6464672阅读:161来源:国知局
专利名称:一种cpu核运行方法及装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及在系统中运行虚拟CPU核的技术。
背景技术
在通信领域中,系统往往要处理多种逻辑功能,比如控制功能、业务数 据传输功能等。通常,将通信系统中各功能进行逻辑区分,每个功能可以作为一个平面,称为逻辑平面(Logic Plane )。在逻辑平面中,主要实现业务数 据传输功能的平面,则称为数据平面(DataPlane);主要实现各种控制功能的 平面,则称为控制平面(Control Plane )。不同的逻辑平面有不同的特征,比如控制平面,通常涉及到复杂的逻辑 和控制,需要有操作系统的支持才容易实现;但是对于数据平面,主要负责 数据的传输,其处理流程相对简单,甚至可以不用操作系统,这样就可以减 少操作系统的调度开销,提高系统的处理性能。如果系统中采用多核CPU ( Center Process Unit,中央处理单元),那么通 常的做法就是让一个核运行操作系统,实现控制平面的逻辑,而让另外的核 处理非控制平面的逻辑。例如一台路由器具有四个CPU核,可以让一个核运行 操作系统,实现控制平面逻辑,而让其他三个核实现转发功能(也就是数据 平面功能),那么这三个核上的逻辑平面就可以不通过操作系统调度而直夢运 行,从而提高系统效率(因为操作系统调度开销比较大)。 一种具体做法是 一个核进行报文接收, 一个核执行路由查找以确定转发端口,另外一个核进 行报文的发送。这样的架构下,系统的处理能力会大大加强。但是,本发明的发明人发现对于一些低端的产品,即CPU核数目较少的 系统,例如只有一个或两个CPU核的系统,那么上面的软件架构就不适用了。需要把上述软件架构中的部分CPU核的逻辑平面移植到系统仅有的一个或两 个CPU核的操作系统中,在操作系统支持下才能实现所有的功能,由于操作系统的调度开销和线程间通信的开销比较大,导致系统处理性能低。 发明内容本发明实施例提供了一种CPU核运行方法及装置,用以在物理存在的 CPU核的基础上增加虚拟CPU核的运行,提高系统的处理性能。 一种CPU核运4亍方法,包括系统中断到达时,调用预先配置的虚拟CPU核入口函数;并 通过CPU核运行所调用的虚拟CPU核入口函数。 所述系统中断为系统定时中断。所述通过CPU核运行所调用的虛拟CPU核入口函数,具体包括 在所述虚拟CPU核入口函数通过CPU核开始运行时,记录运行起始时间; 根据预先设定的运行时间以及记录的起始时间,确定该虚拟CPU核入口 函数的退出时间;每当运行完该虚拟CPU核入口函数中的 一个线程,获得当前时间;比较所述当前时间与退出时间,在所述当前时间大于、等于所述退出时 间时,控制该虚拟CPU核入口函数从所述CPU核退出运行。所述虛拟CPU核入口函数为多个,以及各预先设定的虛拟CPU核入口函 数的运行时间之和小于为所述定时中断设定的定时周期。一种CPU核运行装置,包括入口函数存储才莫块,用于存储配置的虚拟CPU核入口函数; 中断处理模块,用于在系统中断到达时,调用所述入口函数存储模块存储的虚拟CPU核入口函数,将所述虚拟CPU核入口函数通过CPU核运行。 所述中断处理模块具体用于在系统定时中断到达时,在定时中断处理程序中调用虚拟CPU核入口函数。实现在系统原有CPU核的基础上增加了虚拟CPU核,提高了系统处理性能,并提高了代码重用性。


图1为本发明实施例一的虚拟CPU核入口函数运行时间分配示意图; 图2为本发明实施例一的虚拟CPU核运行方法流程示意图; 图3为本发明实施例一的控制虚拟CPU核入口函数退出方法流程图; 图4为本发明实施例一的虚拟CPU核运行装置的内部结构框图; 图5为本发明实施例二的在双核系统的不同中断处理程序中调用各虚拟 CPU核入口函^t的示意图。
具体实施方式
本发明提供的方法是在系统原有的物理存在的CPU核基础上再虚拟出一 个或多个虚拟CPU核,在原有的物理存在的CPU核和虚拟CPU核上分别运 行各逻辑平面,从而提高系统处理性能。比如,在单核CPU系统中,虚拟出 3个CPU核,则系统中包括有4个CPU核(其中1个为原有CPU核、3个为 虚拟CPU核),该系统就可以运行4核系统的软件架构原有CPU核运行操 作系统,实现控制平面逻辑;虚拟的3个CPU核进行数据平面的处理。这样, 提高了单核CPU系统的处理性能,并且可以将4核系统的软件架构直接应用 于本发明虛拟了 3个虚拟CPU核的单核CPU系统,提高了代码重用性。再比如,在双核系统的原有2个CPU核的基础上再虚拟出2个CPU核。 在其中一个原有CPU核上运行操作系统,实现控制平面逻辑;另一个原有CPU 核以及虚拟的2个CPU核则进行数据平面的处理。如此,提高了该双核系统 的处理性能,并且4核系统的软件架构也可直接应用于本发明虚拟了 2个虚 拟CPU核的双核系统,提高了代码重用性。6下面结合附图详细说明本发明虚拟CPU核的技术方案。 对于一个物理存在的CPU核,在该CPU核开始运行时,该CPU核从一固定地址开始读取指令,并执行该指令。通常这个指令会是一个跳转指令,CPU根据该指令跳转到该CPU核的入口函数的起始地址,并开始执行CPU 核入口函数(Core—Enter函数)。在CPU核入口函数中调用该CPU核的调度 程序,从而实现该CPU核对运行程序的调度管理功能。通过调度程序实现对 相应的逻辑平面的调用,从而CPU核通过CPU核入口函数(Core—Enter函数) 实现了相应逻辑平面的调用、运行。对于多个CPU核,则每个CPU核对应于一个Core—Enter函数。这样, 系统在运行起多个CPU核时,每个CPU核都可以通过其Core—Enter函数运 行调度、管理功能,从而调用、运行各自的逻辑平面(逻辑功能)。因此,当 一个CPU核入口函数运行时,即可3见为该CPU核入口函数所对应的CPU核 在运行。本发明的方法是,对于系统需要增加的虚核(比如上述单核系统中增加 的3个虚核、双核系统中增加的2个虚核)定义对应的虚拟CPU核入口函数; 利用系统的中断处理程序,当该中断到达、触发运行中断处理程序时,在中 断处理程序中调用虚拟CPU核入口函数,通过虚拟CPU核入口函数的运行, 从而模拟了 CPU核的调度与管理功能,实现了虚拟CPU核的运行。这样,当 虛拟CPU核入口函数运行起来的时候,相应虛拟CPU核的调度程序也得到运 行,虚拟CPU核运行调度、管理功能,通过调度程序虚拟CPU核的逻辑平面 也会被调用、运行。例如,单核系统中,在原有CPU核的入口函数Core—Enter—1函数中实现 了操作系统的运行。假设,希望该单核系统能够实现4核系统的软件架构, 则该单核系统需要再增加3个虛拟CPU核。针对3个虚拟CPU核分别定义了 Core—Enter—2 、 Core—Enter—3 、 Core_Enter—4入口函数。在Core—Enter一2 、 Core—Enter—3、 Core—Enter—4入口函数中实现了对相应逻辑平面的调用,比如调用数据平面。在系统的中断处理程序中,实现了对Core—Enter—2 、 Core—Enter_3、 Core_Enter_4入口函数的调用。这样,当中断触发时,中断处 理程序调用虚拟CPU核的入口函: Core—Enter—2 、 Core—Enter—3 、 Core—Enter—4,从而实现虚拟CPU核的入口函数的运行。在各虚拟CPU核的 入口函数运行时,则实现了相应逻辑平面的调用与运4亍。这里需要指出的是,上述方法既可以应用于单CPU核系统,也可以应用 于多核系统;增加的虚拟CPU核既可以是一个,也可是多个;既可以在一个 中断处理程序中调用一个或多个虛拟CPU核的入口函数,也可以在多个中断 处理程序中分别调用各虚拟CPU核的入口函数;所述中断处理程序可以是多 种中断处理程序例如,定时中断处理程序、外部中断处理程序等,本领域 技术人员可以根据实际情况,将虛拟CPU核的入口函数设计于对应的中断处 理程序中。下面结合附图以两个具体实施例来详细说明本发明虚拟CPU核的技术方 案。其中,实施例一为在一个定时中断处理程序中实现虚拟多个CPU核的技 术方案;实施例二为在多个中断处理程序中实现虛拟多个CPU核的技术方案。 本领域技术人员可以根据本发明公开的技术内容,轻而易举实现在各种不同 的中断处理程序中实现虛拟多个CPU核的技术方案。实施例一例如,在系统原有CPU核的基础上再增加若干个虚拟CPU核(比如增加 2个虛拟CPU核Core—A核、Core—B核),针对各虛拟CPU核分别设置虚 拟CPU核入口函数(比如Core—Enter_A函数、Core—Enter—B函数)。在系统的一个定时处理中断程序中调用各虚拟CPU核入口函数设置定 时中断的定时周期为T,每当定时周期到达时产生定时中断、运行定时中断处 理程序。在定时中断处理程序中调用了各虚拟CPU核入口函数,比如 Core—Enter—A函数、Core—Enter—B函数。具体的,可以在定时周期T中为各 CPU核(包括原有CPU核和虚拟CPU核)的入口函数运行时间分别分配时间段。比如,如图l所示,为2个虚拟CPU核的入口函数分别分配的运行时间段为^ (比如。为定时周期T中30%的时间)、^ (比如^为定时周期T中40%的时间),其余定时周期T中的时间^则分配给原有CPU核。分配的各时间段之和等于定时周期T。以单核系统实现3核系统软件架构为例,讲述具体技术方案,如图2所示,包括如下步骤S201:根据系统原有物理存在的CPU核,确定需增加的虚拟CPU核。 单核系统原有一个物理存在的CPU核,要实现3核系统则要增加2个虚拟CPU核(Core—A核、Core—B核)。若原有CPU核实现了操作系统的运行,则确定增加的虚拟CPU核实现3核系统中除运行操作系统的CPU核的其它CPU核的相应逻辑平面的调用。S202:对于需要增加的各虛拟CPU核定义对应的虚拟CPU核入口函数。 对于要增加的Core— A核、Core— B核分别定义了虚拟CPU核入口函数Core—Enter—A函数、Core—Enter—B函数。在分别定义的虚拟CPU核入口函数中调用相应逻辑平面。S203:开启系统中断。启定时中断。S204:定时中断到达,开始执行定时中断程序。在开启了系统的定时中断后,系统自动计时,在设定的定时周期T到达 时,即触发定时中断,开始执行定时中断程序。对于在其它类型中断处理程 序中调用虚拟CPU核入口函数的技术方案,则开启相应中断。比如,开启系 统的外部中断,当有外部信号到达则触发外部中断、CPU就调用外部中断处 理程序。S205:定时中断程序调用Core—Enter—A入口函数。在定时中断程序中,调用Core—Enter—A函数,贝'j Core—Enter_A函数通过系统中的物理存在的CPU核开始运行。Core_Enter—A函数为虚拟CPU核 Core— A的入口函数,该函数运行就相当于虚拟CPU核Core— A运行。在Core—Enter—A函凄丈开始运行时,记录下Core—Enter—A函数开始运4亍的 时间Tenter—A。S206: Core—Enter—A函凄t退出。根据记录的Core—Enter—A函数开始运行的时间Tenter—A、以及分配的 Core—Enter—A函数运行时间/,,可以相应计算出Core—Enter—A函数退出的时 间Texit—A=Tenter—A+g ,则根据计算出的Core—Enter—A函数退出时间 Texit—A控制Core—Enter—A函凄史的退出。Core—Enter—A函数通常要完成多个功能或者任务,而每个功能或者任务 都可以通过在Core—Enter—A函数中调用线程来完成。#>据计算出的 Core_Enter—A函数退出时间Texit_A控制Core_Enter_A函数从系统的物理存 在的CPU核退出运行,具体方法的流程图如图3所示,包括S301: Core—Enter—A函数开始运行,记录Core—Enter—A函数开始运行的 时间Tenter—A,计算出Core—Enter—A函数退出的时间Texit一A;S302: Core—Enter—A函数调用调度程序,调度程序运行;S303:调度程序对线程进行调度,判断是否有需要运行的线程;若有, 则执行步骤S304运行该线程;若没有,则执行步骤S307退出Core—Enter—A 函数;S304:运行Core—Enter—A函数中的线程; S305:当该线程运行完,获取当前时间^;S306:比较当前时间c与Texit—A,若^大于或等于Texit_A,则执行S307 退出Core—Enter_A函数的步骤,否则,继续S303步骤。 S307:退出Core—Enter—A函数。进一步,在继续调用、运行Core—Enter—A函数中的下一个线程时,有可 能因为该线程执行时间较长,则导致Core—Enter—A函数的运行时间大大超过分配的^ ,那么可以对于每个线程的运行时间限定一个最大运行时间值^^ , 软件设计需要保证该线程的运行时间不会超过最大运行时间,_ ,也就是设计 线程的任务足够小,从而运行时间不超过最大运行时间,_。这样,就可以保证Core—Enter_A函数运行时间超过^最多为、ax 。通常,_应小于分配给 Core_Enter—A函数运行的时间。具体的,本领域技术人员可以根据实际可接 受的超过分配给Core—Enter_A函数运行时间^的范围来设计^^的具体值。比 如,分配给Core—Enter—A函凄史运4亍的时间^为50ms,系统可4妻受Core—Enter—A 函数实际运行的时间最多为51ms,则设定/,为lms,那么Core—Enter—A函 数实际运行时间最多超过分配时间lms。通过上述的方法,从而控制了 Core—Enter—A函凄史的运4亍时间。S207:定时中断程序调用Core—Enter一B入口函数。在Core—Enter—A函数退出后,即可以运行Core—Enter_B函数,则定时中 断程序调用Core—Enter—B入口函数。在Core—Enter—B函数开始运行时,记录Core—Enter—B开始运行的时间 Tenter一B。Core—Enter—B函数为虚拟CPU核Core—B的入口函数,该函数运行就相 当于虚拟CPU核Core— B运行。 S208: Core—Enter—B函数退出。Core—Enter_B函数控制退出的具体方法与Core—Enter—A函数退出的方法 一样,此处不再赘述。S209:定时中断处理程序退出。 S210:运行原有CPU核的入口函数。在定时中断处理程序退出后,系统可以继续运行原有CPU核的入口函数, 直到下一个定时周期到达,则继续执行步骤S204。通常,各虚拟CPU核入口 函数运行时间之和要小于定时周期T。由于虛核0)^_八、Core—B分别运行了G、 G时间,那么在下一个定时周期T到达前,原有CPU核的入口函数的运行时间々、=丁-^-^。进一步,上述的定时周期既可以是静态i殳置的,也可以#4居实际情况进行动态调整。上述的各虛拟CPU核入口函数运行时间既可以是静态设置的, 也可以是根据实际情况反4贵各虚拟CPU核任务的完成情况,从而相应调整各 虛拟CPU核入口函数运行时间。比如,通过反4贵各虚拟CPU核当前任务未完 成的程度来适应性调整各虚拟CPU核入口函数运行时间。例如,虚拟CPU一A 核还有50%未完成的任务,而虛拟CPU一B核则已经完成所有需要执行的任务, 则可以适当增加虚拟CPU—A核对应的虚拟CPU核入口函凄t运行时间、缩短 虛拟CPU一B核对应的虚拟CPU核入口函数运行时间。本领域技术人员可以理解,虽然上述说明中,为便于理解,对方法的步 骤釆用了顺序性描述,但是应当指出,对于上述步骤的顺序并不作严格限制。一种CPU核虚拟装置,如图4所示,包括入口函数存储模块401、中 断处理模块402。入口函数存储4莫块401 ,其存储了对应于虚拟CPU核定义的虚拟CPU核 入口函数。所述虚拟CPU核为根据系统原有物理存在的CPU核确定的需增加 的虛拟CPU核。确定增加虚拟CPU核的方法如前所述,此处不再赘述。中断处理模块402,用于在中断到达时,调用中断处理程序;并在中断处 理程序中调用入口函数存储模块401中的虛拟CPU核入口函数,则虚拟CPU 核入口函数可以通过系统物理存在的CPU核运行,从而虚拟CPU核入口函数 所对应的虚拟CPU核实现了运行。当需要虛拟的CPU核为多个时,装置中的入口函数存储模块401也可以 是多个,分别存储了为各虚拟CPU核对应定义的虚拟CPU核入口函数。中断 处理模块402在中断到达时,调用中断处理程序;并在中断处理程序中顺序 调用各入口函数存储模块401中的虚拟CPU核入口函数。虚拟CPU核的数量 可以是静态设置的,也可以动态增加或者减少,可以采用不同的方法对虛拟 进行管理,都属于本发明的一种具体应用。进一步,中断处理冲莫块402可以是在定时周期到达产生定时中断时,调 用定时中断处理程序;并在定时中断处理程序中顺序调用入口函数存储模块 401中的虚拟CPU核入口函数。此外,中断处理模块402也可以是在其它中 断到达时调用相应中断处理程序(比如在外部中断到达时调用外部中断处理 程序),在相应中断处理程序中调用入口函凄t存4诸才莫块401中的虚拟CPU核 入口函数。中断处理模块402调用定时中断处理程序,定时中断处理程序调用各虛 拟CPU核入口函数。在中断处理程序调用虛拟CPU核入口函数后,虚拟CPU 核入口函数开始运行。并且虚拟CPU核入口函凄t才艮据预先i殳定的各虛拟CPU 核入口函数运行时间控制退出。各虚拟CPU核入口函数运行时间之和小于所 述定时周期。具体的虚拟CPU核入口函数控制退出方法与前述步骤S301-307 的方法一样,此处不再赘述。实现在系统原有CPU核的基础上增加了虚拟CPU核,提高了系统处理性能, 并提高了代码重用性。入口函数时,还控制各虚拟CPU核入口函数的运行时间,从而保证各虚拟CPU 核入口函数以及原有CPU核入口函数的平稳运行(亦即传:证各虚拟CPU核和 原有CPU核的平稳运行),不会出现因某个CPU核入口函数运行时间过长而 影响其它CPU核入口函数的运行,从而保证各虚拟CPU核的逻辑平面的平稳 运行。实施例二本发明实施例二以一个双核系统为例,讲述在不同中断处理程序中调用各虚拟CPU核入口函数的技术方案。如图5所示,假设对于一个双核系统(包 括Core—1核、Core—2核,分别具有Core—Enter—1 、 Core—Enter—2入口函数), 需要再虛拟2个CPU核(Core 3核、Core 4核),以模拟4核系统。对于Core 3核、Core—4核分别定义了虛拟CPU核的入口函数Core—Enter—3函数、 Core—Enter—4函凄丈。在隶属于Core_l核的外部中断处理程序中调用Core—Enter_3函数,在隶 属于Core_2核的定时中断处理程序中调用Core—Enter—4函数。当系统有外部中断到达时,产生外部中断、Core—1核执^f亍外部中断处理 程序,在外部中断处理程序中调用Core—Enter—3函数。当系统的定时中断到达时,产生定时中断、Core—2核执行定时中断处理 程序,在定时中断处理程序中调用Core—Enter_4函数。在具体实施上述本实施例的方案时,外部中断的触发条件可以是报文到 达信号。当系统接收到报文到达信号时,产生外部中断,调用外部中断处理 程序,并在外部中断处理程序调用Core—Enter一3函数,而Core_Enter_3函数 中可以调用报文接收的数据平面。这样,当报文到达时即触发运行报文接收 的数据平面来接收报文。实现在系统原有CPU核的基础上增加了虛拟CPU核,提高了系统处理性能, 并提高了代码重用性。是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读 取存储介质中,如ROM/RAM、磁碟、光盘等。还可以理解的是,附图或实施例中所示的装置结构仅仅是示意性的,表 示逻辑结构。其中作为分离部件显示的模块可能是或者可能不是物理上分开 的,作为模块显示的部件可能是或者可能不是物理模块。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1、一种CPU核运行方法,其特征在于,包括系统中断到达时,调用预先配置的虚拟CPU核入口函数;并通过CPU核运行所调用的虚拟CPU核入口函数。
2、 如权利要求l所述的方法,其特征在于,所述系统中断为系统定时中断。
3、 如权利要求2所述的方法,其特征在于,所述通过CPU核运行所调 用的虚拟CPU核入口函数,具体包括在所述虚拟CPU核入口函数通过CPU核开始运行时,记录运行起始时间; 根据预先设定的运行时间以及记录的起始时间,确定该虚拟CPU核入口 函数的退出时间;每当运行完该虚拟CPU核入口函数中的 一个线程,获得当前时间; 比较所述当前时间与退出时间,在所述当前时间大于、等于所述退出时 间时,控制该虛拟CPU核入口函凄t从所述CPU核退出运行。
4、 如权利要求3所述的方法,其特征在于,所述虚拟CPU核入口函数定时中断设定的定时周期。
5、 如权利要求3所述的方法,其特征在于,虚拟CPU核入口函数中的 每个线程运行时间小于设定时间值r^ 。
6、 如权利要求4所述的方法,其特征在于,所述定时周期以及各虚拟 CPU核入口函数运行时间为静态设置的;或者,为动态调整的。
7、 一种CPU核运行装置,其特征在于,包括入口函数存储模块,用于存储配置的虚拟CPU核入口函数; 中断处理模块,用于在系统中断到达时,调用所述入口函数存储模块存 储的虚拟CPU核入口函数,将所述虚拟CPU核入口函数通过CPU核运行。
8、 如权利要求7所述的装置,其特征在于,所述中断处理-漠块具体用于在系统定时中断到达时,在定时中断处理程 序中调用虚拟CPU核入口函数。
全文摘要
本发明涉及通信技术领域,尤其涉及在系统中运行虚拟CPU核的技术。一种CPU核运行方法,包括系统中断到达时,调用预先配置的虚拟CPU核入口函数;并通过CPU核运行所调用的虚拟CPU核入口函数。本发明还提供了一种CPU核运行装置。由于在中断处理程序中调用虚拟CPU核的入口函数,从而实现在系统原有CPU核的基础上增加了虚拟CPU核,提高了系统处理性能,并提高了代码重用性。
文档编号G06F9/46GK101324853SQ20081011791
公开日2008年12月17日 申请日期2008年8月5日 优先权日2008年8月5日
发明者健 吴 申请人:北京星网锐捷网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1