CN112130988A - 一种基于优先级分区的任务加速优化方法及装置 - Google Patents
一种基于优先级分区的任务加速优化方法及装置 Download PDFInfo
- Publication number
- CN112130988A CN112130988A CN202010805007.6A CN202010805007A CN112130988A CN 112130988 A CN112130988 A CN 112130988A CN 202010805007 A CN202010805007 A CN 202010805007A CN 112130988 A CN112130988 A CN 112130988A
- Authority
- CN
- China
- Prior art keywords
- task
- priority
- application service
- instruction
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/72—Code refactoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于优先级分区的任务加速执行优化方法及装置,通过预定义任务优先级,以及为各优先级任务配置内存分区和标记字符,在应用业务程序编译之前通过工具自动将预先定义的标记字符放在对应优先级任务的任务函数及其数据区,在程序链接时将相同优先级的任务划分在同一片连续的内存分区中。在程序引导的过程中,将最高优先级的代码锁定在指令Cache中,使最高优先级的代码指令能够以更高的效率、更稳定的执行时间运行,解决采用通用CPU替换专用DSP时高优先级中断执行时间不稳定、执行效率不高的问题。
Description
技术领域
本发明属于数据处理技术领域,具体的说,涉及一种基于优先级分区的任务加速优化方法及装置。
背景技术
随着通用CPU集成度和性能的提高,专用数字信号处理器DSP的发展受到了严重的制约,通用CPU取代专用DSP已经逐渐成为趋势。目前主要DSP厂商(如TI、ADI)已经停止新的DSP发展路标的投入,也开始加大通用CPU的投资。作为整机厂家,也需紧跟技术发展的趋势,否则整机集成将会跟不上市场竞争环境。而通用CPU芯片普遍没有DSP的片内RAM的概念,仅有多级Cache的概念。故其高优先级任务在通用CPU中执行时,因有些代码在DDR-ram中,有些代码在Cache中。当执行过程中因每次执行的程序分支不同,可能导致前次完全在Cache中取指,而本次需要从DDR-ram中取指,这样将导致高优先级任务各次执行的时间差别很大,无法确保任务周期的可信度,使实时控制算法难以按照预定的周期执行,容易造成控制混乱,执行错误,无法完成预定的控制任务。专用数字信号处理器DSP一般都有片内ram空间,指令可放入片内执行,从而确保指令执行的效率和执行时间的稳定性。
工业控制及电力二次设备的控制实时性要求非常高,其控制周期均在毫秒以内,在一些场景中,甚至要求达到了10us的量级。如果高优先实时任务执行时间不稳定,将导致设备控制逻辑出错,造成误动、拒动,可能造成大面积停电事故。因此,采用通用CPU替代专用DSP开发电力二次设备,必须解决通用CPU高优先级任务执行时间的稳定性。一般通用CPU会配备一定数量的片内Cache空间,用于加快指令的执行。但因通用CPU在Cache使用上采用各种预测,可能导致程序执行不同分支时,指令执行时间不同,造成这种情况的主要原因是只有部分指令缓冲在Cache中,还有部分指令在DDR-ram中,当执行过程中出现Cache指令和DDR-ram指令需要互换时,将显著增加指令的执行时间。而Cache由CPU自动预测管理,一般无法确保高优先级任务的所有执行分支全部放入Cache,因此任务执行时间波动很大,这不能适用工业控制、电力二次设备等实时性要求高的应用场景,急需改进高优先级任务的执行机制。
当前,在CPU性能提升及优先级优化方面的现有技术中,多数用于解决芯片设计和布局,也有一些用于改进操作系统任务调度的算法,并不能解决硬实时指令执行稳定性的问题。
发明内容
本发明的目的在于解决高优先级任务Cache和DDR-ram切换造成的执行时间不稳定的问题,提供一种基于优先级分区的任务加速执行优化方法及装置,将代码指令按优先级分区,编译链接自动链接不同优先级代码,最终实现高优先级代码锁定在内部高速Cache存储器中,实现了高优先级任务硬实时执行。
为达到上述目的,本发明采用的技术方案如下:
本发明提供一种基于优先级分区的任务加速执行优化方法,包括:
根据应用业务需求划分任务优先级,以及对各优先级任务进行配置;
根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码;
根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码;
根据标记后的源代码修改编译链接脚本;
采用标记后的源代码和修改后的编译链接脚本进行应用业务程序的编译链接,生成可执行的目标文件;并将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区;
按照任务优先级执行目标文件。
进一步的,所述根据应用业务需求划分任务优先级,包括:
根据应用业务需求划分至少一个任务优先级,高优先级的任务先于低优先级的任务执行。
进一步的,所述对各优先级任务进行配置,包括:为各优先级任务建立任务队列,配置内存分区和标记字符,以及为各优先级任务配置任务添加接口函数。
进一步的,所述配置内存分区和标记字符,包括:
根据嵌入式系统内存空间,规划每类优先级任务在内存空间中放置的位置,定义每类优先级任务内存分区的起始地址和空间大小,并为各优先级任务指定唯一的标记字符。
进一步的,所述为各优先级任务配置任务添加接口函数,包括:
为每个优先级任务队列定义唯一的任务添加接口函数。
进一步的,所述根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码,包括:
调用任务添加接口函数,将应用业务指定的任务函数加入到所调用任务添加接口函数所对应的任务队列中。
进一步的,所述根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码,包括:
扫描编写完成的应用业务程序源代码,获取需要执行的任务函数,任务函数的变量以及任务函数调用的任务添加接口函数;
对所获取的任务函数和任务函数的变量采用任务添加接口函数所对应的优先级任务的标记字符进行标记。
进一步的,所述根据标记后的源代码修改编译链接脚本,包括:
将标记后的源代码中的标记字符定义在链接脚本中,使编译工具在链接指令代码时根据标记字符分配指令代码至所对应的内存分区。
进一步的,所述可执行的目标文件是二进制指令文件。
进一步的,所述将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区,包括:
将CPU的Cache划分为CPU使用区和保留区;
通过BOOT引导程序将高优先级任务代码指令拷贝到Cache的保留区,并将该代码指令的链接地址从内存指定地址修改为Cache地址;
所述高优先级任务代码指令是指任务优先级最高的内存分区的代码指令,或指定的其他内存分区的代码指令。
本发明还提供一种基于优先级分区的任务加速执行优化装置,包括:
配置模块,用于根据应用业务需求划分任务优先级,以及对各优先级任务进行配置;
编码模块,用于根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码;
标记模块,用于根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码;
修正模块,用于根据标记后的源代码修改编译链接脚本;
编译模块,用于采用标记后的源代码和修改后的编译链接脚本进行应用业务程序的编译链接,生成可执行的目标文件;并将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区;
以及,
执行模块,用于按照任务优先级执行目标文件。
进一步的,所述配置模块具体用于,
为各优先级任务建立任务队列;
根据嵌入式系统内存空间,规划每类优先级任务在内存空间中放置的位置,定义每类优先级任务内存分区的起始地址和空间大小,并为各优先级任务指定唯一的标记字符;
以及,
为每个优先级任务队列定义唯一的任务添加接口函数。
进一步的,所述标记模块具体用于,
扫描编写完成的应用业务程序源代码,获取需要执行的任务函数,任务函数的变量以及任务函数调用的任务添加接口函数;
对所获取的任务函数和任务函数的变量采用任务添加接口函数所对应的优先级任务的标记字符进行标记。
进一步的,所述编译模块具体用于,
将CPU的Cache划分为CPU使用区和保留区;
通过BOOT引导程序将高优先级任务代码指令拷贝到Cache的保留区,并将该代码指令的链接地址从内存指定地址修改为Cache地址;
所述高优先级任务代码指令是指任务优先级最高的内存分区的代码指令,或指定的其他内存分区的代码指令。
本发明的有益效果为:
本发明通过划分任务优先级,以及为各优先级任务配置内存分区,将相同优先级的任务划分在同一片连续的内存分区中,在程序引导的过程中,将最高优先级的代码锁定在指令Cache中,这样CPU在执行中断服务程序的过程中,每次都从Cache获取指令,其执行时间的抖动都变小的很小,基本可做到10微妙级的抖动。采用该方法,中断运行时间非常稳定,满足了保护算法的快速性和稳定性要求。
本发明可用于对实时性要求高的工业控制设备、电力二次设备、机车控制设备等高可靠领域的嵌入式实时应用场景。
附图说明
图1为本发明的内存空间分配示意图;
图2为本发明的基于优先级分区的任务加速执行优化方法流程图;
图3为本发明中高优先级任务优化原理图。
具体实施方式
下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明提供一种基于优先级分区的任务加速执行优化方法,用于解决通用CPU高优先级任务运行因Cache命中不确定导致的运行时间抖动过大的问题,其原理参见图3,首先把CPU的Cache划分成两个区,分别为CPU使用区和保留区,两个区的大小按照高优先级任务代码占用空间大小预估预设,其中保留区为高优先级任务锁定区,CPU使用区由CPU自行调度使用。高优先级的中断服务程序在启动之前全部锁定在Cache中,这样在CPU开始执行该任务时,可直接从Cache中执行,而无需将任务指令从DDR导入Cache,节省了执行时间,使任务执行时间更稳定。
参见图2,本发明的基于优先级分区的任务加速执行优化方法,包括:
步骤1:预定义任务优先级;
具体的,预定义任务优先级是根据应用业务需求对任务优先级进行预定义,可以定义多种类型的任务优先级,如可以定义五种类型的任务优先级,一到五级任务,其中一级任务优先级最高,五级任务优先级最低。也可以定义只有一个优先级,也可以定义两个优先级,当然也可以定义三个优先级。
具体的,预定义任务优先级之后,下述所有步骤中均采用本步骤预定义的任务优先级,高优先级的任务可以打断低优先级的任务,低优先级任务只能等待高优先级任务执行完成才能占用CPU资源。参见图1,本发明实施例中预定义4级任务优先级,分别为优先级1、优先级2、优先级3和优先级4。
步骤2:预定义每类优先级任务的内存分区;
具体的,预定义每类优先级任务的内存分区是指指定每类优先级任务在内存中放置的位置和空间大小,即定义每类优先级任务内存分区的起始地址和空间大小,并指定该类优先级任务的标记字符,如本发明实施例中4类任务优先级的标记字符分别采用:Task-Level1、Task-Level2、Task-Level3、Task-Level4。
所述的任务优先级内存分区,是指预先规划好嵌入式系统内存的分区,指定各个内存分区的功能和内容,并将各类优先级任务的指令预先指定内存放置位置。
所述的内存分区的规划需要根据应用业务编程需求合理规划内存空间大小,确保各个内存分区空间足够使用,不会出现内存溢出的现象。
所述的标记字符,是指给每类优先级任务预定义了独一无二的标记字符,最终这些标记字符会放入应用业务程序代码中,并在编译链接脚本文件中定义这些标记字符的放置位置。
所述的标记字符,可以任意定义,只要能区分不同级别的任务即可。
所述的标记字符主要是用来标记代码和程序链接脚本使用,通过所述的标记字符,为代码指令和内存空间的桥梁,通过所述标记字符,使程序编译链接后可自动将相应的指令放入预先指定的内存空间。
步骤3:定义添加不同优先级任务的接口函数;
本步骤中,根据步骤2定义的任务优先级类别,建立各个优先级任务的任务队列,并定义不同优先级任务的任务添加接口函数。当应用业务调用所述的任务添加接口函数后,将应用业务指定的任务函数加入到应用业务指定优先级的任务队列中,运行时通过将不同任务队列挂接CPU不同优先级的中断,完成任务优先级的调度和抢占。
所述的任务队列均按照一定的规则组织,调用任务时按照添加的先后依次调用。
所述的任务添加接口函数和任务队列是相互关联使用的,不能独立存在。
所述的任务添加接口函数必须和任务队列对应,并能将任务添加到指定优先级的队列中。如定义的任务添加接口函数为:addTask(level,new_task,arg),应用业务编写程序需要将计算任务加入到优先级为1的任务队列,则在函数中调用addTask(Task-Level1,calculate,*p),这样就可以把应用业务的计算任务calculate函数加入的优先级为1的任务队列中。执行时该计算任务将按照最高优先级任务执行。应用业务编程人员可以多次调用该任务添加接口函数,将不同的任务函数加入到不同的任务队列中,也可以通过多次调用该任务添加接口函数,将不同任务函数添加到同一优先级的任务队列中。
步骤4:程序编写完成后,通过工具自动在程序源代码中增加任务优先级标记字符。
所述的程序编写完成后,是指应用业务程序编写完成。
所述的工具是指可以通过扫描程序源代码,将调用任务添加接口函数的应用任务函数找出来,并按照步骤2定义的标记字符进行代码标记。
所述的工具将所述的任务函数的数据区及相关的接口函数全部找出来,也按照步骤2定义的标记字符进行代码标记。
所述的工具能够按照上述要求对应用业务程序源代码进行标记,生成标记后的源代码,所述工具不能对源代码做其他内容的变更和修改。
所述的工具并不是特指某种工具软件,而是指具有所述功能的软件。
所述的工具对源代码标记时,将不同任务优先级的程序源代码按照其对应的标记字符进行标记,使所述的程序源代码能够按照任务优先级分类链接和放置。
例如将calculate函数添加优先级1的任务标记,采用如下的方法:
void calculate(void*p)__attribute__((section(".Task-Level1")))。
步骤5:在编译链接之前,修改编译链接脚本文件,将定义的标记字符分配到预定义内存分区中;
本步骤中的标记字符是指按照调用任务标记了源代码的标记字符,所述标记字符代表了源代码编译后的指令,对所述的标记字符分配内存分区,就是对被所述字符标记的代码指令分配内存分区。将标记字符定义在链接脚本中,使编译工具在链接目标代码时能够按照预定义的规则分配指令代码的内存分区。
所述的修改编译链接脚本文件是按照编译器指定的规则进行的,采用编译器链接规则进行修改。所述的链接脚本为软件开发编译链接的规则文件,其规则是按照软件编译的顺序和编译器的规则编写的。
如按照上文的定义,需要在链接脚本中增加如下代码:
__bss_start=.;
.Task-Level1 0x90000000:
{
*(.Task-Level1)
}
.Task-Level2 0x80000000:
{
*(.Task-Level2)
}
.Task-Level3 0x70000000:
{
*(.Task-Level3)
}
.Task-Level4 0x60000000:
{
*(.Task-Level4)
}
.bss:
{
*(.dynbss)
*(.bss.bss.*.gnu.linkonce.b.*)
*(COMMON)
.=ALIGN(.!=0?64/8:1);
}
通过这样方式,可以让编译器按照预先规划的内存空间链接代码。
步骤6:用步骤4生成的代码和步骤5生成的编译链接脚本编译生成可执行文件。
所述的代码是指应用业务程序代码,采用步骤4所述的工具按照任务优先级分别标注后生成的代码,所述的代码是仅对应用业务程序代码进行优先级标注,标注时按照各种不同指令体系进行标注。所述的指令体系是指不同的CPU指令体系,如ARM指令体系、X86指令体系、MIPS指令体系等等。
所述的编译链接脚本是由步骤5修改后的脚本,脚本中定义了不同优先级任务的内存空间大小及内存起始地址。
所述的编译是指采用标注后的源代码和修改后的编译链接脚本进行程序的编译链接,最终生成可执行的目标文件。
所述的目标文件是可以执行的二进制指令文件。所述目标文件中的二进制指令已经按照任务的优先级自动分配到不同的内存分区。
步骤7:在BOOT引导程序中,将指定内存分区的指令直接引导并锁定在Cache中执行。
本发明中,把CPU的Cache划分成两个区,分别为CPU使用区和保留区,其中保留区为高优先级任务锁定区,CPU使用区由CPU自行调度使用。采用BOOT引导任务指令到内存时,将指定内存分区的指令全部锁定到Cache的保留区,这样在CPU开始执行该任务时,可直接从Cache中执行,而无需将任务指令从DDR导入Cache,节省了执行时间,使任务执行时间更稳定。
所述的指定内存分区是指步骤2定义的内存分区中优先级最高的内存分区,或应用编程人员指定的其他优先级的内存分区,取决于芯片Cache空间的大小。
所述的BOOT引导程序,是指引导应用业务程序进入内存分区并开始运行的固件程序。
所述的BOOT引导程序按照可执行的目标文件中的内存空间分配将指令代码放置到指定的位置,并将CPU的取指指针指向应用业务程序的入口位置,开始程序的执行。
所述的BOOT程序将预先定义的内存分区中的指令拷贝到Cache中,并将该部分代码的链接地址从内存指定地址修改为Cache地址,使CPU在取这部分指令时可直接从Cache中取指,不需要从内存中取指。
所述将指定内存分区的指令直接引导并锁定在Cache中,是指BOOT引导程序在按照可执行的目标文件定义的顺序完成程序的拷贝后,将最高优先级或指定优先级任务空间的指令放入Cache中,并修改这部分代码的链接地址,使其链接地址变为Cache空间的地址,使CPU取指时能够从Cache中读取这部分指令。
步骤8:开始程序的执行。
所述程序的执行是指BOOT程序引导完成后,BOOT引导程序将CPU的取指指针(PC指针)指向业务应用程序的入口位置,开始程序的正常运转。
本发明还提供一种基于优先级分区的任务加速执行优化装置,包括:
配置模块,用于根据应用业务需求划分任务优先级,以及对各优先级任务进行配置;所述配置包括:为各优先级任务建立任务队列,配置内存分区和标记字符,以及为各优先级任务配置任务添加接口函数;
编码模块,用于根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码;
标记模块,用于根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码;
修正模块,用于根据标记后的源代码修改编译链接脚本;
编译模块,用于采用标记后的源代码和修改后的编译链接脚本进行应用业务程序的编译链接,生成可执行的目标文件;并将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区;
以及,
执行模块,用于按照任务优先级执行目标文件。
进一步的,所述配置模块具体用于,
根据嵌入式系统内存空间,规划每类优先级任务在内存空间中放置的位置,定义每类优先级任务内存分区的起始地址和空间大小,并为各优先级任务指定唯一的标记字符;
以及,
为每个优先级任务队列定义唯一的任务添加接口函数。
进一步的,所述标记模块具体用于,
扫描编写完成的应用业务程序源代码,获取需要执行的任务函数,任务函数的变量以及任务函数调用的任务添加接口函数;
对所获取的任务函数和任务函数的变量采用任务添加接口函数所对应的优先级任务的标记字符进行标记。
进一步的,所述编译模块具体用于,
将CPU的Cache划分为CPU使用区和保留区;
通过BOOT引导程序将高优先级任务代码指令拷贝到Cache的保留区,并将该代码指令的链接地址从内存指定地址修改为Cache地址;
所述高优先级任务代码指令是指任务优先级最高的内存分区的代码指令,或指定的其他内存分区的代码指令。
值得指出的是,该装置实施例是与上述方法实施例对应的,上述方法实施例的实现方式均适用于该装置实施例中,并能达到相同或相似的技术效果,故不在此赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (14)
1.一种基于优先级分区的任务加速执行优化方法,其特征在于,包括:
根据应用业务需求划分任务优先级,以及对各优先级任务进行配置;
根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码;
根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码;
根据标记后的源代码修改编译链接脚本;
采用标记后的源代码和修改后的编译链接脚本进行应用业务程序的编译链接,生成可执行的目标文件;并将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区;
按照任务优先级执行目标文件。
2.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述根据应用业务需求划分任务优先级,包括:
根据应用业务需求划分至少一个任务优先级,高优先级的任务先于低优先级的任务执行。
3.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述对各优先级任务进行配置,包括:为各优先级任务建立任务队列,配置内存分区和标记字符,以及为各优先级任务配置任务添加接口函数。
4.根据权利要求3所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述配置内存分区和标记字符,包括:
根据嵌入式系统内存空间,规划每类优先级任务在内存空间中放置的位置,定义每类优先级任务内存分区的起始地址和空间大小,并为各优先级任务指定唯一的标记字符。
5.根据权利要求3所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述为各优先级任务配置任务添加接口函数,包括:
为每个优先级任务队列定义唯一的任务添加接口函数。
6.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码,包括:
调用任务添加接口函数,将应用业务指定的任务函数加入到所调用任务添加接口函数所对应的任务队列中。
7.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码,包括:
扫描编写完成的应用业务程序源代码,获取需要执行的任务函数,任务函数的变量以及任务函数调用的任务添加接口函数;
对所获取的任务函数和任务函数的变量采用任务添加接口函数所对应的优先级任务的标记字符进行标记。
8.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述根据标记后的源代码修改编译链接脚本,包括:
将标记后的源代码中的标记字符定义在链接脚本中,使编译工具在链接指令代码时根据标记字符分配指令代码至所对应的内存分区。
9.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述可执行的目标文件是二进制指令文件。
10.根据权利要求1所述的一种基于优先级分区的任务加速执行优化方法,其特征在于,所述将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区,包括:
将CPU的Cache划分为CPU使用区和保留区;
通过BOOT引导程序将高优先级任务代码指令拷贝到Cache的保留区,并将该代码指令的链接地址从内存指定地址修改为Cache地址;
所述高优先级任务代码指令是指任务优先级最高的内存分区的代码指令,或指定的其他内存分区的代码指令。
11.一种基于优先级分区的任务加速执行优化装置,其特征在于,包括:
配置模块,用于根据应用业务需求划分任务优先级,以及对各优先级任务进行配置;
编码模块,用于根据优先级任务配置将应用业务的待执行任务加入到指定优先级的任务队列中,生成应用业务程序源代码;
标记模块,用于根据优先级任务配置对应用业务程序源代码进行标记,生成标记后的源代码;
修正模块,用于根据标记后的源代码修改编译链接脚本;
编译模块,用于采用标记后的源代码和修改后的编译链接脚本进行应用业务程序的编译链接,生成可执行的目标文件;并将目标文件中高优先级任务代码指令引导并锁定在Cache的保留区;
以及,
执行模块,用于按照任务优先级执行目标文件。
12.根据权利要求11所述的一种基于优先级分区的任务加速执行优化装置,其特征在于,所述配置模块具体用于,
为各优先级任务建立任务队列;
根据嵌入式系统内存空间,规划每类优先级任务在内存空间中放置的位置,定义每类优先级任务内存分区的起始地址和空间大小,并为各优先级任务指定唯一的标记字符;
以及,
为每个优先级任务队列定义唯一的任务添加接口函数。
13.根据权利要求11所述的一种基于优先级分区的任务加速执行优化装置,其特征在于,所述标记模块具体用于,
扫描编写完成的应用业务程序源代码,获取需要执行的任务函数,任务函数的变量以及任务函数调用的任务添加接口函数;
对所获取的任务函数和任务函数的变量采用任务添加接口函数所对应的优先级任务的标记字符进行标记。
14.根据权利要求11所述的一种基于优先级分区的任务加速执行优化装置,其特征在于,所述编译模块具体用于,
将CPU的Cache划分为CPU使用区和保留区;
通过BOOT引导程序将高优先级任务代码指令拷贝到Cache的保留区,并将该代码指令的链接地址从内存指定地址修改为Cache地址;
所述高优先级任务代码指令是指任务优先级最高的内存分区的代码指令,或指定的其他内存分区的代码指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805007.6A CN112130988B (zh) | 2020-08-12 | 2020-08-12 | 一种基于优先级分区的任务加速优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010805007.6A CN112130988B (zh) | 2020-08-12 | 2020-08-12 | 一种基于优先级分区的任务加速优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112130988A true CN112130988A (zh) | 2020-12-25 |
CN112130988B CN112130988B (zh) | 2022-07-26 |
Family
ID=73850383
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010805007.6A Active CN112130988B (zh) | 2020-08-12 | 2020-08-12 | 一种基于优先级分区的任务加速优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112130988B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
CN115185615A (zh) * | 2022-09-09 | 2022-10-14 | 湖南三湘银行股份有限公司 | 基于内存空间优化的插件程序调用方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143396A1 (en) * | 2004-12-29 | 2006-06-29 | Mason Cabot | Method for programmer-controlled cache line eviction policy |
CN103164278A (zh) * | 2011-12-09 | 2013-06-19 | 沈阳高精数控技术有限公司 | 一种面向多核处理器的实时动态内存管理器实现方法 |
CN109857535A (zh) * | 2019-02-18 | 2019-06-07 | 国家计算机网络与信息安全管理中心 | 面向Spark JDBC的任务优先级控制的实现方法及装置 |
-
2020
- 2020-08-12 CN CN202010805007.6A patent/CN112130988B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060143396A1 (en) * | 2004-12-29 | 2006-06-29 | Mason Cabot | Method for programmer-controlled cache line eviction policy |
CN103164278A (zh) * | 2011-12-09 | 2013-06-19 | 沈阳高精数控技术有限公司 | 一种面向多核处理器的实时动态内存管理器实现方法 |
CN109857535A (zh) * | 2019-02-18 | 2019-06-07 | 国家计算机网络与信息安全管理中心 | 面向Spark JDBC的任务优先级控制的实现方法及装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
CN114928644B (zh) * | 2022-07-20 | 2022-11-08 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
CN115185615A (zh) * | 2022-09-09 | 2022-10-14 | 湖南三湘银行股份有限公司 | 基于内存空间优化的插件程序调用方法 |
CN115185615B (zh) * | 2022-09-09 | 2022-12-02 | 湖南三湘银行股份有限公司 | 基于内存空间优化的插件程序调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112130988B (zh) | 2022-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112130988B (zh) | 一种基于优先级分区的任务加速优化方法及装置 | |
JP5295228B2 (ja) | 複数のプロセッサを備えるシステム、ならびにその動作方法 | |
CN107992344B (zh) | 一种协程实现方法及装置 | |
Hammond et al. | The paraphrase project: Parallel patterns for adaptive heterogeneous multicore systems | |
JPH01166141A (ja) | デバッグ情報提供方法 | |
US7757224B2 (en) | Software support for dynamically extensible processors | |
CN112905998A (zh) | 基于代码段随机切换的地址导向型攻击防护方法及装置 | |
CN107526622B (zh) | Linux的快速异常处理方法及装置 | |
US20040015901A1 (en) | Compiling method and storage medium therefor | |
CN113220326B (zh) | 智能合约升级方法及区块链系统 | |
KR100597414B1 (ko) | 데이터 처리 장치 및 이를 이용한 레지스터 할당 방법 | |
US7877629B2 (en) | Facilitating handling of exceptions in a program implementing a M-on-N threading model | |
US6134708A (en) | Program compilation execution system | |
Kästner et al. | Safety-critical software development in c++ | |
US11520597B2 (en) | Operating system architecture for microkernel generations support | |
CN111563000B (zh) | 一种文件生成方法、智能终端及存储介质 | |
US7080204B2 (en) | Cache controller computer system and method for program recompilation | |
Ghiglio et al. | Improving performance of SYCL applications on CPU architectures using LLVM-directed compilation flow | |
US20020073133A1 (en) | Register allocation method and software development method for various execution environments and LSI for executing developed software | |
Aldea-Rivas et al. | Proposal for a new ada profile for small microcontrollers | |
JP6295914B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ | |
KR100763199B1 (ko) | 가상 머신 환경에서의 메소드 호출 방법 및 상기 방법을수행하는 가상 머신이 탑재된 시스템 | |
Haberl et al. | From COLA Models to Distributed Embedded Systems Code | |
Mumolo et al. | A hard real-time kernel for motorola microcontrollers | |
KR102575773B1 (ko) | 대칭적 인터페이스를 이용하여 외부 서비스 요청 처리가 가능한 프로세서 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |