单芯片多处理器任务调度管理方法

文档序号:6469284阅读:246来源:国知局
专利名称:单芯片多处理器任务调度管理方法
技术领域
本发明涉及一种单芯片多处理器任务管理调度方法。可应用于多指令多数据(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,任务分配结束,唤醒子处理器开始处理新分配 的任务;STOP4,子处理器处理任务结束,休眠子处理器。
设置上述任务加载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. 任务流出任务池,任务池状态寄存器进行一次左移操作,最高位补O
b. —个新的任务流入任务池,进行一次右移操作,但最高位补l。
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信号,SUBPROCESS OR—ALL—BUSY-l,表 示子处理器全部处于忙状态。
设置上述前向循环查询子处理器的工作状态的具体步骤为
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_REG[X] = O,对X所对应的处理器进行任务分配; SUB—PRCEOSSOR—STATE—REG[X] = 1 ,继续査SUB—PRCEOSSOR—STATE— REG的下一位,直到查到空闲的子处理器为止。这里"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。本任务调度管理模块所应用的系统具有如 下结构,如图l所示-
1:具有一个任务库,里面包含了各种任务的可执行代码,任务库采用连续编址,用任务号对
每个任务的起始地址和结束地址进行定位,任务库的大小为4K。 2:具有一个容量大小为4的任务池,用来缓存用户程序中的任务号,用任务号来指示单芯片
多处理器要处理的任务。 3:任务调度管理模块内嵌在本单芯片多处理器系统中,在完成任务调度管理的同时,分别完
成任务的DMA控制,子处理器的工作和休眠控制。 4: 4个子处理器为基于51架构的MCU,能处理在独立MCU上所能处理的所有任务。 5. —个DMA控制模块,用来完成指令从任务库到子处理器本地cache的数据直接写入。
从以上的结构可以看出,任务调度管理模块管理着整个单芯片多处理器系统的运行,在提 高单芯片多处理器系统性能方面起着十分重要的作用。用户程序是一个主进程,内部包含了 大量的子进程,对应于子处理器来说,就是任务。子处理器具有本地CACHE用于存放任务 指令。本单芯片多处理器系统具有一个庞大的任务库,里面包含了任务对应的可执行代码, 用户程序经过编译器编译后,抽取其中的并行任务,并产生任务号流,任务号流入任务池, 任务调度管理模块在取得任务号后,根据系统的运行状态完成任务的分配,调度和管理,从 而实现任务的并行处理。 具体的实现方法为
(1) 任务池的设置
在任务管理调度模块中,定义任务池状态寄存器TASK—REG,系统复位后,任务池中没 有任务,系统会立刻取得任务号流入任务池,任务调度管理模块发现任务池不为空后,立刻 启动任务的调度分配。任务池会不断地填充新的任务,直到任务池满(信号TASK—FULL有 效),停止新的任务流入。任务池有两种工作状态
a) :流入任务,任务从经过编译器编译的用户程序中取得任务号,流入任务池,每流入一个
新的任务,任务状态寄存器TASK一REG将做一次右移操作,最高位补l。
b) :流出任务,任务被任务调度管理模块取走,任务流出任务池,任务状态寄存器TASK一REG
做一个左移操作,最低位补O,任务状态寄存器的内容将被任务调度管理模块査询,以获得
合理的任务分配,任务状态寄存器的操作如图2所示。 设置任务池的目的是任务预取,解决任务分配和任务取得之间的瓶颈,提高任务的调度和管 理速度。
(2) 子处理器状态寄存器的设置
系统复位后,4个子处理器都工作在休眠状态,任务调度管理模块根据任务池的情况对 子处理器分配任务结束后,将唤醒子处理器,并对子处理器状态寄存器对应的位置1,当任 务处理器结束后,将子处理器处于休眠状态,把状态寄存器对应的位置0,子处理器状态寄 存器操作如图3所示
(3)前向査询子处理器状态
对于本例的单芯片多处理器的系统,共有4个子处理器,在算法上按照Pl-P2-P3-P4的 顺序查询子处理器的工作状态,具体的操作流程如下
a) :系统刚开始运行时 系统刚开始运行时分为复位状态和复位后的状态。
1:系统复位时,所有的子处理器都工作在休眠模式下,任务调度管理模块停止一切任务分 配。
2:系统复位后,任务调度管理模块的操作歩骤如下
1) 首先启动任务的获取,任务调度管理模块从用户应用程序中取得任务放入任务池, 如果任务数小于4个,则需要取到任务池满信号TASK—FULL有效为止。
2) 任务池中有任务后,TASK—EMPTY-O,任务池不空,立刻进行任务分配,首先分配子 处理器l(Pl)—个任务,当任务分配完毕后,唤醒Pl同时把子处理器状态寄存器 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) 接受任务调度管理模块的任务号(TASKNO)
b) 根据任务调度管理模块发送的任务号,查找得到该任务在任务库的起始地址和结束地址, 并把这两个地址赋给ROM—ADDRESS—BEGIN和ROM_ADDRESS—END两个寄存器。
c) 接收任务管理调度模块的任务加载启动信号LOAD—BEGIN,若LOAD—BEGIN=l,启动 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。
权利要求
1. 一种单芯片多处理器任务调度管理方法,其特征在于多指令多数据流MIMD单芯片多处理器体系,用硬件的方式代替软件操作系统中的进程管理,对运行于系统中的并行任务进行任务调度,任务分配,任务管理以及对子处理器的管理,实现单芯片多处理器快速的任务并行处理;具体步骤为a. 设置一个具有任务缓冲功能的任务池TASK POOL,它是一个任务队列存储器,任务池的大小由用户根据系统的要求自定义;b. 设置一个任务调度管理模块,用来调度和分配任务池中的任务,任务的调度和管理是根据子处理器的工作情况自动完成的;c. 设置一个任务加载DMA模块,任务的加载是在任务调度管理模块的控制下,由DMA操作完成任务指令的加载;2. 根据权利1所述的任务调度管理方法,其特征在于所述设置任务池的方法为a. 任务池的大小根据系统的大小来确定,当系统处于复位状态时,任务池处于关闭状态,里面不存放任何任务,复位结束后,立刻从任务库中取得任务放入任务池,当任务池满时,停止取任务;b. 任务管理模块分配任务给子处理器处理时,任务池流出以前取得的任务,并从任务库中取得新的任务补充任务池,直至任务池满为止;c. 系统运行至将要结束而不需要从任务库中取新的任务时,任务池只需要根据任务调度模块的任务分配情况流出任务,而不再取新的任务补充任务池,系统运行结束时,任务池为空。
2. 根据权利1所述的任务调度管理方法,其特征在于所述设置任务池的方法为a. 任务池的大小根据系统的大小来确定,当系统处于复位状态时,任务池处于关闭状态, 里面不存放任何任务,复位结束后,立刻从任务库中取得任务放入任务池,当任务池 满时,停止取任务;b. 任务管理模块分配任务给子处理器处理时,任务池流出以前取得的任务,并从任务库 中取得新的任务补充任务池,直至任务池满为止;c. 系统运行至将要结束而不需要从任务库中取新的任务时,任务池只需要根据任务调度 模块的任务分配情况流出任务,而不再取新的任务补充任务池,系统运行结束时,任 务池为空。
3. 根据权利1所述的任务调度管理方法,其特征在于所述设置任务管理调度模块的具体步 骤为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,表示任务分配结束,唤醒子处理器处理 新分配的任务;STOP4,子处理器处理任务结束,休眠子处理器。
4. 根据权利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信号,指示任务分配完毕。
5. 根据权利3所述的任务调度管理方法,其特征在于所述设置任务池状态寄存器的具体步 骤为-a. —个任务流出任务池,任务池状态寄存器进行一次左移操作,最低位补O;b. —个新的任务流入任务池,进行一次右移操作,但最高位补l;c. 用TASK_EMPTY信号表示任务池为空,TASK_FULL信号表示任务池为满。
6. 根据权利3所述的任务调度管理方法,其特征在于所述设置子处理器状态寄存器的具体 步骤为a.任务分配完成并唤醒之处理器后,设置子处为忙状态, SUB_PROCESSOR_STATE_REG对应的位为1;b. 子处理器处理完分配的任务后,设置子处理器为空闲状态, SUB—PROCESSOR—STATE—REG对应的位为0;c. 用SUB_PROCESSOR—ALL_BUSY信号表示子处理器全部处于忙状态,任务调度管 理模块停止任务的分配。
7. 根据权利3所述的任务调度管理方法,其特征在于所述査询任务池状态寄存器 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—ALLBUSY二l,表示子处理器全部处于忙状态。
8. 根据权利3所述的任务调度管理方法,其特征在于所述前向循环査询子处理器的工作状 态的具体步骤为-a. 査询SUB—PROCESSOR—ALL—BUSY信号,SUB_PROCESSOR_ALL—BUSY=1,停止查询子处理器状态;SUB_PROCESSOR—ALL_BUSY=0,开 始前向查询子处理器;b. 按优先权轮换的原则顺序查询子处理器工作状态;c. 如果SUB—PRCEOSSOR_STATE—REG[X] = O,则对X所对应的子处理器进行任务分 酉己 ; SUB—PRCEOSSOR—STATE_REG[X]=1 , 继 续 査 询 SUB—PRCEOSSOR_STATE_REG的下一位,直到查到空闲的子处理器为止,这里X 对应着某个子处理器。
全文摘要
本发明涉及一种单芯片多处理器任务管理调度方法。本方法是基于多指令多数据流(MIMD)单芯片多处理器结构体系,对运行于系统中的并行任务进行任务调度,任务分配,任务管理和子处理器管理,实现单芯片多处理器的并行处理。单芯片多处理器任务调度管理方法可以应用于具有独立本地ROM的各种子处理器组成的单芯片多处理器系统,例如8051体系结构的MCU,并且子处理器之间可以是同构也可以是异构。
文档编号G06F9/38GK101387952SQ200810200288
公开日2009年3月18日 申请日期2008年9月24日 优先权日2008年9月24日
发明者峰 冉, 斌 孙, 张一驰, 王尧明, 胡越黎, 科 闫 申请人:上海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1