CN101387952B - 单芯片多处理器任务调度管理方法 - Google Patents
单芯片多处理器任务调度管理方法 Download PDFInfo
- Publication number
- CN101387952B CN101387952B CN2008102002881A CN200810200288A CN101387952B CN 101387952 B CN101387952 B CN 101387952B CN 2008102002881 A CN2008102002881 A CN 2008102002881A CN 200810200288 A CN200810200288 A CN 200810200288A CN 101387952 B CN101387952 B CN 101387952B
- Authority
- CN
- China
- Prior art keywords
- task
- sub
- processor
- pool
- address
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明涉及一种单芯片多处理器任务管理调度方法。本方法是基于多指令多数据流(MIMD)单芯片多处理器结构体系,对运行于***中的并行任务进行任务调度,任务分配,任务管理和子处理器管理,实现单芯片多处理器的并行处理。单芯片多处理器任务调度管理方法可以应用于具有独立本地ROM的各种子处理器组成的单芯片多处理器***,例如8051体系结构的MCU,并且子处理器之间可以是同构也可以是异构。
Description
技术领域
本发明涉及一种单芯片多处理器任务管理调度方法。可应用于多指令多数据(MIMD)架构的单芯片多处理器***,子处理器既可以是同构处理器也可以是异构处理器,亦可应用于其它单芯片多处理器领域。
背景技术
单芯片多处理器任务调度是指调度和管理运行在用户程序中的并行任务,使得任务能够在各个子处理器中并发地执行,从而达到程序的并行处理,提高了处理器的处理速度和处理效率。
在过去的几十年里,随着微电子技术的不断进步,微处理器有了迅速的发展,微处理器的工作频率已从MHz级上升到GHz级。同时,处理器能够在同一周期里执行多条指令,可以设计和开发指令并行处理,这些极大地提高了计算机的性能。如:指令流水处理和超标量执行,超长指令处理器等。但是,随着指令并行度的增加和指令复杂度的提高,处理器的硬件设计和编译器设计将变得越来越复杂,而程序的并行处理反而得不到很大的提高,并且,这些性能的提高很大程度还和处理器工作的时钟频率有关。同时,一味地提高时钟频率,会导致芯片功耗的增加,仅仅在时钟上消耗的功率就占了整个芯片的50%以上。为此,以单芯片多处理器架构为基础的任务并行处理方法可以很好地解决单纯开发指令的并行性和提高工作的时钟频率所带来的一系列难题,多核处理器要发挥多核的性能需要提高程序的并行度,单线程程序无法发挥多核处理器的优势。单芯片多处理器可以将具有内在执行并行性的复杂任务分解为一系列紧密联系的子任务,并行实现要完成的任务。多核架构的SOC(Multi-Processor System on Chip,MP SOC)可以完成将复杂任务分解到多个核中去执行的任务。由于不同内核可以执行不同的任务,多核架构在一个周期内可以执行多个指令。这种并行处理使得整个***的性能与使用单个处理器串行处理相同任务相比,有了很大的改进。另外,多核架构的设计可以复用原有的成熟单核处理器作为处理器核心,从而可以缩短设计和验证周期,节省开发成本,符合SOC设计的基本思路,多核架构是未来SOC发展的一个趋势。单芯片多处理器以数量的优势获得性能的提高,且设计简单,可以大大提高处理器的速度,是未来处理器发展的一个重要方向。
发明内容
本发明的目的在于提供一种应用于单芯片多处理器中的任务调度方法,它基于多指令多数据流(MIMD)单芯片多处理器架构,能够自动地分析***的工作状态并做出合理的任务分配和调度,把***中的各种并行任务分配到子处理器中,使得各个子处理器发挥最大的工作效率,实现程序最大化并行处理。
为达到上述目的,本发明的构思如下:
单芯片多处理器的优势主要是任务的并行处理,借用并行处理的优势而提高处理器整体的性能,所以,设计单芯片多处理器主要完成任务的合理并行处理。任务的合理调度和管理是任务并行处理的关键。单芯片多处理器任务调度可以理解为运行在单芯片多处理器上的操作***,不过,它是由硬件来实现的,不同于一般的软件操作***。它可以完成任务调度,任务通信,存储管理等一般软件操作所做的工作。用户程序对任务调度***来说是一个主进程,主进程里面调用了大量的子进程或子任务,这种硬件操作***就是根据目前子处理器的工作情况和内存的使用情况,自动地分配任务给各个子处理器,实现任务的并行处理。任务管理***可以进行任务预取,任务预取也就是预先取得任务号,取得的任务号放入任务池中,任务池的大小和子处理器的数量成正比,可以由用户自定义。任务调度管理***根据各个子处理器的工作情况,自动地从任务池中把任务分配给各个空闲的子处理器。子处理器的工作情况用子处理器工作状态寄存器SUB_PROCESSOR_STATE_REG来指示,其中的特定位表示该子处理器的工作状态为空闲或者忙。任务池的状态用任务池状态寄存器TASK_REG来指示,用来表示任务池的状态。任务调度管理模块根据这两个寄存器的状态来判断任务的分配与否,通过DMA模块把特定任务的可执行代码直接加载到子处理器的本地ROM中,并唤醒子处理器,使得子处理器立刻处理分配的任务。
根据上述构思,本发明采用下述技术方案:
一种单芯片多处理器任务调度管理方法,其特征在于多指令多数据流(MIMD)单芯片多处理器体系,对***中的并行任务进行任务调度,任务分配,任务管理以及对子处理器的管理,实现单芯片多处理器快速的任务并行处理。
上述单芯片多处理器任务调度管理方法的具体步骤为:
a.设置一个具有任务缓冲功能的任务池TASK_POOL,它是一个任务队列存储器,任务池的大小由用户根据***的要求自定义。
b.设置一个任务调度管理模块,用来调度和分配任务池中的任务,任务的调度是根据子处理器的工作情况自动地完成。
c.设置一个任务加载DMA控制模块,任务的加载是在任务调度管理模块的控制下,由DMA操作完成任务指令的加载。
设置上述任务池的方法为:
a.任务池的大小根据***的大小来确定,当***处于复位状态时,任务池处于关闭状态,里面不存放任何任务,复位结束后,立刻从任务库中取得任务放入任务池,当任务池满时,停止取任务。
b.任务调度管理模块分配任务给子处理器处理时,任务池流出以前取得的任务,并从任务库中取得新的任务补充任务池,直至任务池满为止。
c.***运行至将要结束而不需要从任务库中取新的任务时,任务池只需要根据任务调度管理模块的任务分配情况流出任务,而不在取新的任务补充任务池,程序运行结束时,任务池为空。
设置上述任务管理调度模块的具体步骤为:
a.任务池状态寄存器TASK_REG,用来指示任务池的状态。
b.子处理器工作状态寄存器SUB_PROCESSOR_STATE_REG,用来指示子处理器的工作状态,寄存器的位数与子处理器的个数相同。子处理器工作状态寄存器SUB_PROCESSOR_STATE_REG的每一位的值与子处理器的工作状态有关,复位表示子处理器空闲,置位表示子处理器忙。
c.查询任务池状态寄存器TASK_REG和子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG,根据两个寄存器的状态进行任务的分配。
d.查询子处理器的工作状态,采用优先权轮换的方式查询各个子处理器的工作状态,根据查询结果,任务调度管理模块具有以下几种工作状态:
NO_TASK:表示任务池中没有任何任务,停止任务分配,子处理器全部休眠。
ALL_BUSY:表示所有子处理器工作在忙状态,停止任务分配,等待有空闲的子处理器出现后再分配。
BEGIN_LOAD:表示查询得到某一子处理器空闲,开始分配任务,发送LOAD_BEGIN信号给DMA控制器。
LOAD:表示等待接收DMA模块的LOAD_END信号,LOAD_END=1,任务分配结束,唤醒子处理器使它处理分配的任务;LOAD_END=0,任务分配还没有结束,继续分配任务。
e.处理器控制模块,控制子处理器的工作和休眠,子处理器控制模块接收任务调度管理模块的START和STOP信号,START=1,任务分配结束,唤醒子处理器开始处理新分配的任务;STOP=1,子处理器处理任务结束,休眠子处理器。
设置上述任务加载DMA控制器的具体步骤为:
a.标定一个任务在任务库中的起始地址(TASK_BEGIN_ADDR)和结束地址(TASK_END_ADDR)
b.接收任务调度管理模块发送的任务号(TASK NO),确定该任务的起始地址和结束地址,并把它赋给DMA控制器的输出地址信号ROM_ADDRESS。
c.接收任务调度管理模块的任务分配起始信号LOAD_BEGIN。
d.逐步递增DMA控制器的输出地址信号ROM_ADDRESS的值,若该地址等于任务的结束地址(TASK_END_ADDR),向任务管理调度模块发出LOAD_END信号,表示任务分配完毕。
设置上述任务池状态寄存器的具体步骤为:
a.任务流出任务池,任务池状态寄存器进行一次左移操作,最高位补0
b.一个新的任务流入任务池,进行一次右移操作,但最高位补1。
c.TASK_EMPTY信号表示任务池为空,TASK_FULL信号表示任务池为满。设置上述子处理器工作状态寄存器的具体步骤为:
a.任务分配完成并唤醒子处理器后,设置子处理器为忙状态,SUB_PROCESSOR_STATE_REG对应的位为1。
b.子处理器处理完分配的任务后,设置子处理器为空闲状态,SUB_PROCESSOR_STATE_REG对应的位为0。
c.SUB_PROCESSOR_ALL_BUSY信号表示子处理器全部处于忙状态,任务调度管理模块停止任务的分配。
设置上述查询任务池状态寄存器TASK_REG和子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG的具体步骤为:
a.对任务池状态寄存器TASK_REG做缩位“或”运算,并把结果给TASK_EMPTY信号,TASK_EMPTY=“0”表示任务池为空;对任务池状态寄存器TASK_REG做缩位“与”运算,并把结果给TASK_FULL信号;TASK_FULL=1,表示任务池为满。
b.查询子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG的每一位就可以获得对应子处理器的工作状态。
c.对子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG做缩位“与”运算,把结果给SUB_PROCESSOR_ALL_BUSY信号,SUB_PROCESS OR_ALL_BUSY=1,表示子处理器全部处于忙状态。
设置上述前向循环查询子处理器的工作状态的具体步骤为:
a.查询SUB_PROCESSOR_ALL_BUSY信号,SUB_PROCESSOR_ALL_BUSY=1,停止查询子处理器状态;SUB_PROCESSOR_ALL_BUSY=0,开始前向查询子处理器的工作状态。
b.按P1->P2->P3->P4的顺序查询子处理器工作状态寄存器的每一位,这里P1,P2,P3,P4代表各个子处理器。
c.SUB_PRCEOSSOR_STATE_KEG[X]=0,对X所对应的处理器进行任务分配;SUB_PRCEOSSOR_STATE_KEG[X]=1,继续查SUB_PRCEOSSOR_STATE_REG[X]的下一位,直到查到空闲的子处理器为止。这里“X”代表某个子处理器。
本发明与现有技术相比较,具有如下特点和优点:
本发明基于多指令多数据(MIMD)单芯片多处理器架构,把运行在单芯片多处理器中的复杂任务有序地分配到多个子处理器中,能实现指令的并行处理。实现软件操作***的硬件处理,提高了整个单芯片多处理器的处理速度和效率。在硬件上实现了动态的任务分配和管理,由于任务调度管理模块是一个独立的任务管理模块,可嵌入到同构或者异构的多处理器***中,所以本发明既可应用于同构的多处理器***,也可应用于异构的多处理器***。本方法可应用于具有独立本地ROM的各种子处理器组成的单芯片多处理器***,例如8051体系结构的MCU,并且子处理器之间可以是同构也可以是异构。
附图说明:
图1是本发明一个实例的单芯片多处理器的结构图。
图2是图1示例任务池状态寄存器操作图。
图3是图1示例的子处理器状态寄存器操作图。
图4是图1示例的前向查询操作示意图。
图5是图1示例的子处理器控制示意图。
图6是图1示例的DMA操作流程图图。
具体实施方式
本发明的一个优选实施例详述如下:本单芯片多处理器任务调度管理方法,其特征在于多指令多数据流MIMD单芯片多处理器体系,用硬件的方式代替软件操作***中的进程管理,对运行于***中的并行任务进行任务调度,任务分配,任务管理以及对子处理器的管理,实现单芯片多处理器快速的任务并行处理。本单芯片多处理器任务调度方法做成一个独立的模块,嵌入在4个以51架构作为子处理器的单芯片多处理器***中,对4个子处理器进行任务调度和管理,四个子处理器分别命名为P1,P2,P3,P4。本任务调度管理模块所应用的***具有如下结构,如图1所示:
1:具有一个任务库,里面包含了各种任务的可执行代码,任务库采用连续编址,用任务号对每个任务的起始地址和结束地址进行定位,任务库的大小为4K。
2:具有一个容量大小为4的任务池,用来缓存用户程序中的任务号,用任务号来指示单芯片多处理器要处理的任务。
3:任务调度管理模块内嵌在本单芯片多处理器***中,在完成任务调度管理的同时,分别完成任务的DMA控制,子处理器的工作和休眠控制。
4:4个子处理器为基于51架构的MCU,能处理在独立MCU上所能处理的所有任务。
5.一个DMA控制模块,用来完成指令从任务库到子处理器本地cache的数据直接写入。
从以上的结构可以看出,任务调度管理模块管理着整个单芯片多处理器***的运行,在提高单芯片多处理器***性能方面起着十分重要的作用。用户程序是一个主进程,内部包含了大量的子进程,对应于子处理器来说,就是任务。子处理器具有本地CACHE用于存放任务指令。本单芯片多处理器***具有一个庞大的任务库,里面包含了任务对应的可执行代码,用户程序经过编译器编译后,抽取其中的并行任务,并产生任务号流,任务号流入任务池,任务调度管理模块在取得任务号后,根据***的运行状态完成任务的分配,调度和管理,从而实现任务的并行处理。
具体的实现方法为:
(1)任务池的设置
在任务管理调度模块中,定义任务池状态寄存器TASK_REG,***复位后,任务池中没有任务,***会立刻取得任务号流入任务池,任务调度管理模块发现任务池不为空后,立刻启动任务的调度分配。任务池会不断地填充新的任务,直到任务池满(信号TASK_FULL有效),停止新的任务流入。任务池有两种工作状态:
a):流入任务,任务从经过编译器编译的用户程序中取得任务号,流入任务池,每流入一个新的任务,任务状态寄存器TASK_REG将做一次右移操作,最高位补1。
b):流出任务,任务被任务调度管理模块取走,任务流出任务池,任务状态寄存器TASK_REG做一个左移操作,最低位补0,任务状态寄存器的内容将被任务调度管理模块查询,以获得合理的任务分配,任务状态寄存器的操作如图2所示。
设置任务池的目的是任务预取,解决任务分配和任务取得之间的瓶颈,提高任务的调度和管理速度。
(2)子处理器状态寄存器的设置
***复位后,4个子处理器都工作在休眠状态,任务调度管理模块根据任务池的情况对子处理器分配任务结束后,将唤醒子处理器,并对子处理器状态寄存器对应的位置1,当任务处理器结束后,将子处理器处于休眠状态,把状态寄存器对应的位置0,子处理器状态寄存器操作如图3所示
(3)前向查询子处理器状态
对于本例的单芯片多处理器的***,共有4个子处理器,在算法上按照P1-P2-P3-P4的顺序查询子处理器的工作状态,具体的操作流程如下:
a):***刚开始运行时
***刚开始运行时分为复位状态和复位后的状态。
1:***复位时,所有的子处理器都工作在休眠模式下,任务调度管理模块停止一切任务分配。
2:***复位后,任务调度管理模块的操作步骤如下:
1)首先启动任务的获取,任务调度管理模块从用户应用程序中取得任务放入任务池,如果任务数小于4个,则需要取到任务池满信号TASK_FULL有效为止。
2)任务池中有任务后,TASK_EMPTY=0,任务池不空,立刻进行任务分配,首先分配子处理器1(P1)一个任务,当任务分配完毕后,唤醒P1同时把子处理器状态寄存器SUB_PROCESSOR_STATE_REG的第0位置1,接着继续查询并分配任务给子处理器2(P2)直至4个子处理器全部分配完。
b):***运行中间过程中
***运行过程中的任务调度管理模块主要负责子处理器的资源回收和新的任务的分配,具体工作步骤如下:
1)当子处理器向任务调度管理模块发出任务操作结束信号(TASK_PROCESS_END)后,将停止向该处理器驱动时钟信号,迫使子处理器停止工作,等待下一个任务的处理。
2)任务调度管理模块连续查询任务池状态寄存器(TASK_REG)和子处理器状态寄存器(SUB_PROCESSOR_STATE_REG)来确定新的任务的分配:
●若子处理器全忙信号SUB_PRO_ALL_BUSY有效,停止任务分配,等待该信号无效。
●按照P1-P2-P3-P4-P1前向查询,优先权轮换的方式查询子处理器状态寄存器(SUB_PROCESSOR_STATE_REG),若查询到某一位为0,则分配新的任务给对应的子处理器,并修改子处理器状态寄存器的对应位。
c):***运行快结束时
当***运行至快要结束整个用户程序时,预取的结束任务号(TASK_END_NO)为FF时,表示用户程序已经没有其他子任务,将停止任务流入任务池,此时任务池只流出任务,不流进任务。当任务池空信号TASK_EMPTY有效时,停止任务的分配,等到最后一个任务被子处理器处理完后,所有的子处理器都处于休眠模式,***自动进入完全低功耗运行的休眠模式。
整个任务调度管理模块是个庞大的状态机,它需要分析***运行的状态,主要是分析两个状态寄存器:任务池状态寄存器和子处理器状态寄存器,根据这两个状态寄存器的信息进行状态的转移,前向查询子处理器进行任务分配如图4所示。
(4)子处理器控制模块
子处理器控制模块的设计主要是协助任务调度管理模块控制子处理器的运行或者休眠,主要通过控制子处理器的时钟使能来实现。如图5所示,它主要接受任务调度管理模块的START信号和STOP信号,子处理器控制模块是一个独立的状态机,具有两种工作状态:分别为RUN和STOP。
STOP:***复位或在RUN状态下接收到STOP信号后,进入STOP状态,子处理器时钟使能信号PX_CLOCK_ENABLE信号无效,停止子处理器时钟的输入。
RUN:在STOP状态下接收到START信号后,进入RUN状态,唤醒处于休眠状态下的子处理器,子处理器时钟使能信号PX_CLOCK_ENABLE有效,子处理器正常工作。
(5)DMA控制模块
DMA控制模块主要负责把子处理器要处理的任务从任务库中加载到子处理器的本地CACHE里面,如图6所示,它的具体操作步骤如下:
a)接受任务调度管理模块的任务号(TASK NO)
b)根据任务调度管理模块发送的任务号,查找得到该任务在任务库的起始地址和结束地址,并把这两个地址赋给ROM_ADDRESS_BEGIN和ROM_ADDRESS_END两个寄存器。
c)接收任务管理调度模块的任务加载启动信号LOAD_BEGIN,若LOAD_BEGIN=1,启动DMA操作,产生两套地址,分别为RAM_ADDRESS和ROM_ADDRESS。RAM_ADDRESS为子处理器本地CACHE的地址信号,ROM_ADDRESS为任务库的ROM地址信号,ROM_ADDRESS的起始地址为ROM_ADDRESS_BEGIN,两个地址分别在时钟信号的每一拍加一,同时CACHE和任务库ROM的片选信号CS_LIB_ROM和CS_PRO_RAM使能有效,子处理器CACHE的使能信号WR_PRO_RAM使能有效,任务库ROM和子字处理器本地CACHE通过数据总线之间相连,根据两个RAM的TIMING的对比,使得数据能够完全地读出和写入。
d)DMA模块会不断地监视ROM_ADDRESS信号,若ROM_ADDRESS=ROM_ADDRESS_END,表示本次任务分配结束,停止地址信号RAM_ADDRESS和ROM_ADDRESS的递增。并使CS_LIB_ROM,CS_PRO_RAM,WR_PRO_RAM等控制信号无效,并在下一个时钟周期清零RAM_ADDRESS和ROM_ADDRESS信号,同时向任务调度管理模块发生任务加载结束信号LOAD_END。
Claims (5)
1.一种单芯片多处理器任务调度管理方法,其特征在于多指令多数据流MIMD单芯片多处理器体系,用硬件的方式代替软件操作***中的进程管理,对运行于***中的并行任务进行任务调度,任务分配,任务管理以及对子处理器的管理,实现单芯片多处理器快速的任务并行处理;具体步骤为:
a.设置一个具有任务缓冲功能的任务池TASK POOL,它是一个任务队列存储器,任务池的大小由用户根据***的要求自定义;
b.设置一个任务调度管理模块,用来调度和分配任务池中的任务,任务的调度和管理是根据子处理器的工作情况自动完成的;
c.设置一个任务加载DMA模块,任务的加载是在任务调度管理模块的控制下,由DMA操作完成任务指令的加载;
所述设置任务池的方法为:
a)任务池的大小根据***的大小来确定,当***处于复位状态时,任务池处于关闭状态,里面不存放任何任务,复位结束后,立刻从任务库中取得任务放入任务池,当任务池满时,停止取任务;
b)任务调度管理模块分配任务给子处理器处理时,任务池流出以前取得的任务,并从任务库中取得新的任务补充任务池,直至任务池满为止;
c)***运行至将要结束而不需要从任务库中取新的任务时,任务池只需要根据任务调度管理模块的任务分配情况流出任务,而不再取新的任务补充任务池,***运行结束时,任务池为空;
所述设置任务调度管理模块的具体步骤为:
a)设置任务池状态寄存器TASK_REG,用来指示任务池的状态;TASK_REG中“1”的个数就是任务的个数;
b)设置子处理器工作状态寄存器SUB_PROCESSOR_STATE_REG,用来指示子处理器的工作状态,寄存器的位数与子处理器的个数相同;子处理器工作状态寄存器SUB_PROCESSOR_STATE_REG的每一位的值与子处理器的工作状态有关,“0”表示子处理器空闲,“1”表示子处理器忙;
c)查询任务池状态寄存器TASK_REG和子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG,根据两个寄存器的状态进行任务的分配;
d)前向循环查询子处理器的工作状态,根据优先权轮换的原则顺序查询子处理器的工作状态,根据查询结果,任务调度管理模块具有以下几种工作状态:
NO_TASK:任务池中没有任务,停止任务分配,子处理器休眠;
ALL_BUSY:所有子处理器处于忙状态,停止任务分配,等待有空闲的子处理器出 现后再分配;
BEGIN_LOAD:查询得到某子处理器空闲,开始分配任务,发送LOAD_BEGIN信号给DMA控制器;
LOAD:等待接受DMA模块的LOAD_END信号,LOAD_END=1,任务分配结束,唤醒子处理器使它处理分配的任务;LOAD_END=0,任务分配还没有结束,继续分配任务;
e)设置子处理器控制模块,控制子处理器的工作和休眠,子处理器控制模块接收任务调度管理模块的START和STOP信号,START=1,表示任务分配结束,唤醒子处理器处理新分配的任务;STOP=1,子处理器处理任务结束,休眠子处理器;所述设置任务加载DMA模块的具体步骤为:
a)标定每一个任务在任务库中的起始地址TASK_BEGIN_ADDR和结束地址TASK_END_ADDR;
b)接收任务调度管理模块发送的任务号,确定该任务的起始地址和结束地址,并把它赋给DMA控制器的子任务起始地址寄存器ROM_ADDRESS_BEGIN和子任务结束地址寄存器ROM_ADDRESS_END,DMA模块还输出任务库地址信号ROM_ADDRESS和子处理器本地CACHE地址信号RAM_ADDRESS;
c)接受任务调度管理模块的任务分配起始信号LOAD_BEGIN;
d)连续增加DMA控制器输出的任务库地址信号ROM_ADDRESS的值和子处理器本地CACHE地址信号RAM_ADDRESS的值,若ROM_ADDRESS的值等于子任务的结束地址寄存器ROM_ADDRESS_END的值,表示任务分配结束,向任务调度管理模块发出LOAD_END信号,指示任务分配完毕。
2.根据权利要求1所述的单芯片多处理器任务调度管理方法,其特征在于所述设置任务池状态寄存器的具体步骤为:
a)一个任务流出任务池,任务池状态寄存器进行一次左移操作,最低位补0;
b)一个新的任务流入任务池,进行一次右移操作,但最高位补1;
c)用TASK_EMPTY信号表示任务池为空,TASK_FULL信号表示任务池为满。
3.根据权利要求1所述的单芯片多处理器任务调度管理方法,其特征在于所述设置子处理器工作状态寄存器的具体步骤为:
a)任务分配完成并唤醒子处理器后,设置子处理器为忙状态,SUB_PROCESSOR_STATE_REG对应的位为1;
b)子处理器处理完分配的任务后,设置子处理器为空闲状态,SUB_PROCESSOR_STATE_REG对应的位为0;
c)用SUB_PROCESSOR_ALL_BUSY信号表示子处理器全部处于忙状态,任务调度管理模块停止任务的分配。
4.根据权利要求1所述的单芯片多处理器任务调度管理方法,其特征在于所述查询任务池状态寄存器TASK_REG和子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG的具体步骤为:
a)对任务池状态寄存器TASK_REG做缩位“或”运算,并把结果给TASK_EMPTY信号,TASK_EMPTY=0表示任务池为空;对任务池状态寄存器TASK_REG做缩位“与”运算,并把结果给TASK_FULL信号;TASK_FULL=1,表示任务池满;
b)查询子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_KEG的每一位就可以获得对应子处理器的工作状态;
c)对子处理器工作状态寄存器SUB_PRCEOSSOR_STATE_REG做缩位“与”运算,把结果给SUB_PROCESSOR_ALL_BUSY信号,SUB_PROCESS_ALL_BUSY=1,表示子处理器全部处于忙状态。
5.根据权利要求1所述的单芯片多处理器任务调度管理方法,其特征在于所述前向循环查询子处理器的工作状态的具体步骤为:
a)查询SUB_PROCESSOR_ALL_BUSY信号,SUB_PROCESSOR_ALL_BUSY=1,停止查询子处理器状态;SUB_PROCESSOR_ALL_BUSY=0,开始前向查询子处理器的工作状态;
b)按优先权轮换的原则顺序查询子处理器工作状态;
c)如果SUB_PRCEOSSOR_STATE_KEG[X]=0,则对X所对应的子处理器进行任务分配;SUB_PRCEOSSOR_STATE_REG[X]=1,继续查询SUB_PRCEOSSOR_STATE_KEG[X]的下一位,直到查到空闲的子处理器为止,这里X对应着某个子处理器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102002881A CN101387952B (zh) | 2008-09-24 | 2008-09-24 | 单芯片多处理器任务调度管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102002881A CN101387952B (zh) | 2008-09-24 | 2008-09-24 | 单芯片多处理器任务调度管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101387952A CN101387952A (zh) | 2009-03-18 |
CN101387952B true CN101387952B (zh) | 2011-12-21 |
Family
ID=40477385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102002881A Expired - Fee Related CN101387952B (zh) | 2008-09-24 | 2008-09-24 | 单芯片多处理器任务调度管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101387952B (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012836B (zh) * | 2009-09-07 | 2012-07-04 | ***通信集团公司 | 一种进程生存控制方法和设备 |
CN101794239B (zh) * | 2010-03-16 | 2012-11-14 | 浙江大学 | 一种基于数据流模型的多处理器任务调度管理方法 |
US9058191B2 (en) | 2010-03-22 | 2015-06-16 | Qualcomm Incorporated | Direct transfer of executable software image to memory allocated by target processor based on transferred image header |
US8838949B2 (en) * | 2010-03-22 | 2014-09-16 | Qualcomm Incorporated | Direct scatter loading of executable software image from a primary processor to one or more secondary processor in a multi-processor system |
CN102214122B (zh) * | 2010-04-01 | 2014-01-29 | 联咏科技股份有限公司 | 配置计算机***的装置 |
CN102236580B (zh) * | 2010-04-26 | 2013-03-20 | 阿里巴巴集团控股有限公司 | 为etl任务分配节点的方法和调度*** |
CN102455933B (zh) * | 2010-10-22 | 2014-01-15 | 深圳市科陆电子科技股份有限公司 | 一种通过线程管理提高多任务处理效率的方法 |
CN102043675B (zh) * | 2010-12-06 | 2012-11-14 | 北京华证普惠信息股份有限公司 | 一种基于任务处理请求任务量大小的线程池管理方法 |
CN102955716B (zh) * | 2011-08-19 | 2016-05-18 | 苏州简约纳电子有限公司 | 一种多线程处理器和处理方法 |
CN102360246B (zh) * | 2011-10-14 | 2014-04-09 | 武汉理工大学 | 一种异构分布式***中基于自适应阈值的节能调度方法 |
CN102508708B (zh) * | 2011-11-30 | 2014-04-23 | 湖南大学 | 基于改进遗传算法的异构多核节能任务调度方法 |
CN103294554A (zh) * | 2012-03-05 | 2013-09-11 | 中兴通讯股份有限公司 | 片上***soc的多处理器的调度方法及装置 |
CN103514640B (zh) * | 2012-06-19 | 2016-08-03 | 中兴通讯股份有限公司 | 一种多车道自由流***及其并行操作方法和装置 |
CN102929718B (zh) * | 2012-09-17 | 2015-03-11 | 厦门坤诺物联科技有限公司 | 一种基于任务调度的分布式gpu计算机*** |
CN102999385B (zh) * | 2012-11-06 | 2016-05-25 | 国网山东省电力公司枣庄供电公司 | 计算设备中多处理器协同处理方法 |
CN104239134B (zh) * | 2013-06-21 | 2018-03-09 | 华为技术有限公司 | 一种众核***的任务管理方法和装置 |
WO2015042904A1 (zh) * | 2013-09-29 | 2015-04-02 | 华为技术有限公司 | 一种多核***中资源池的调度方法、装置和*** |
FI127266B (en) | 2016-07-08 | 2018-02-28 | Sarokal Test Systems Oy | A system for processing data stream messages |
CN107656804B (zh) * | 2017-09-22 | 2019-03-01 | 深圳金融电子结算中心有限公司 | 进程池***及方法 |
CN108121433B (zh) * | 2017-12-06 | 2021-10-15 | 中国航空工业集团公司西安航空计算技术研究所 | 一种gpu多处理器***的任务调度方法 |
CN109165086A (zh) * | 2018-08-13 | 2019-01-08 | 深圳市特康生物工程有限公司 | 任务执行方法及单片机 |
CN110895487B (zh) * | 2018-09-12 | 2023-03-10 | 北京奇虎科技有限公司 | 分布式任务调度*** |
CN115495252B (zh) * | 2022-11-18 | 2023-03-03 | 苏州成科自控设备有限公司 | 一种mcu后台任务池的设计方法 |
-
2008
- 2008-09-24 CN CN2008102002881A patent/CN101387952B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101387952A (zh) | 2009-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101387952B (zh) | 单芯片多处理器任务调度管理方法 | |
Singh et al. | NERO: A near high-bandwidth memory stencil accelerator for weather prediction modeling | |
CN108027771B (zh) | 基于块的处理器核复合寄存器 | |
TWI622940B (zh) | 用於在類神經網路中協同式及分散式計算的方法及設備 | |
CN108027807B (zh) | 基于块的处理器核拓扑寄存器 | |
CN108027772B (zh) | 用于逻辑处理器的不同的***寄存器 | |
Gong et al. | Save: Sparsity-aware vector engine for accelerating dnn training and inference on cpus | |
CN103279445A (zh) | 运算任务的计算方法及超算*** | |
WO2013184380A2 (en) | Systems and methods for efficient scheduling of concurrent applications in multithreaded processors | |
CN105487838A (zh) | 一种动态可重构处理器的任务级并行调度方法与*** | |
CN103842933B (zh) | 多核平台中的受约束引导技术 | |
CN101526934A (zh) | 一种gpu与cpu复合处理器的组建方法 | |
CN102147722A (zh) | 实现中央处理器和图形处理器功能的多线程处理器及方法 | |
Ramírez et al. | A risc-v simulator and benchmark suite for designing and evaluating vector architectures | |
CN101739235A (zh) | 将32位dsp与通用risc cpu无缝混链的处理器装置 | |
Pericas et al. | A flexible heterogeneous multi-core architecture | |
CN109739833A (zh) | 一种基于fpga的国产平台数据库加速***及方法 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
CN102193830A (zh) | 面向众核环境的分治映射/归约并行编程模型 | |
CN107329822B (zh) | 面向多源多核***的基于超任务网的多核调度方法 | |
CN110297661A (zh) | 基于amp构架dsp操作***的并行计算方法、***及介质 | |
Xiao et al. | An energy-aware heuristic scheduling for data-intensive workflows in virtualized datacenters | |
CN101751373A (zh) | 基于单一指令集微处理器运算单元的可配置多核/众核*** | |
US20240169201A1 (en) | Microcontroller unit integrating an sram-based in-memory computing accelerator | |
CN102023846B (zh) | 基于单片多处理器***的共享前端流水线结构 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111221 Termination date: 20160924 |