CN102609306B - 多核处理芯片对视频处理任务的处理方法及其系统 - Google Patents
多核处理芯片对视频处理任务的处理方法及其系统 Download PDFInfo
- Publication number
- CN102609306B CN102609306B CN201210034047.0A CN201210034047A CN102609306B CN 102609306 B CN102609306 B CN 102609306B CN 201210034047 A CN201210034047 A CN 201210034047A CN 102609306 B CN102609306 B CN 102609306B
- Authority
- CN
- China
- Prior art keywords
- task
- processing
- queue
- kernel
- order
- 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.)
- Active
Links
Images
Abstract
本发明涉及视频处理领域,公开了一种多核处理芯片对视频处理任务的处理方法及其系统。该方法及其系统提高了高负荷下HDVICP的使用率,并能够支持针对任务队列的优先级配置。本发明中,方法包括以下步骤:第一处理内核根据任务类别建立任务队列,供各其他处理内核加入待处理任务;第一处理内核为每一个可编程模块分别建立服务线程,并为每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理。
Description
技术领域
本发明涉及视频处理领域,特别涉及一种嵌入式视频处理技术。
背景技术
Netra平台高效的编解码运算能力来源于它的高清视频影像协处理器(HDVICP),其控制由一颗ARM-CORTEX-M3处理内核(称为VID)来完成。根据不同的芯片型号,HDVICP的个数可能不同。VID作为一个资源模块,必须统一管理所有的H DVICP,并提高其使用效率。
HDVICP可以独立工作,在多个HDVICP情况下,每个HDVICP在能力上都是对等的,除了访问DDR时具有一定的内部竞争关系,其工作流程也互不干扰。在目前系统中,HDVICP可以执行的但不限于以下的任务:
A1)视频压缩,支持标准264、海康264和MPEG4等视频压缩标准;
A2)视频解码,支持标准264、海康264和MPEG4等视频压缩标准;
A3)移动侦测;
A4)智能处理。
上述任务的执行请求和数据源来自于Netra平台的其它处理内核(如A8、C674、VPS),VID只是接收这些请求,选择一个HDVICP进行处理,最后把处理的结果进行返回。
VID上任何一个任务的处理流程都可以分为如下5部分:
B1)数据准备(T1),即将传递过来的数据和参数进行转换,并为HDVICP分配一些内存资源;
B2)预处理(T2),即配置HDVICP,为其加载代码和数据;
B3)HDVICP运算(T3),该阶段无需VID的任何干预,VID可以转移出来做其它事情;
B4)后处理(T4),即HDVICP运算完成后中断通知VID,VID恢复HDVICP的一些默认状态;
B5)数据返回(T5),即VID将运算后的数据进行组织,并返回给其它处理内核。
由上可知,除了在阶段2和阶段4中HDVICP和VID被同时占用外,其余阶段二者可以并行工作,如图1所示。
HDVICP所完成的工作是系统中运算量最大的环节,是提升性能的关键所在。常规的做法是,针对HDVICP要处理的每一种任务,在VID上为其建立一个线程,当该线程接收到该任务的处理请求时,查找一个空闲的HDVICP,使用完毕后再将其释放;如果查不到空闲的HDVICP,该线程只能休眠等待,直到查到为止。这种方法在系统负荷低时具有最快的响应速度,但本发明的发明人发现,当系统负荷高时会降低HDVICP的有效使用率,并且会导致优先级控制失效,这是因为:在系统负荷高时,HDVICP有很高的几率处于繁忙状态,导致线程查询不到空闲的HDVICP,被迫休眠。休眠的最短时间是1ms,但是,有可能在经过0.1ms后,HDVICP已经处于空闲状态了,任务线程多休眠的0.9ms就白白浪费了,而HDVICP每次工作的时间也仅有1个或几个ms,这0.9ms的浪费对于HDVICP来说是巨大的。对于优先级控制,由于HDVICP空闲后第一个醒来的线程总会优先获得HDVICP的使用权,这样为任务线程设置的优先级就失去了效力。
发明内容
本发明的目的在于提供一种多核处理芯片对视频处理任务的处理方法及其系统,针对HDVICP建立服务线程,主动查询需要处理的任务队列,提高了高负荷下HDVICP的使用率,并能够支持针对任务队列的优先级配置。
为解决上述技术问题,本发明的实施方式公开了一种多核处理芯片对视频处理任务的处理方法,该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,该多核处理芯片对视频处理任务的处理方法包括以下步骤:
第一处理内核为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务;
第一处理内核为每一个可编程模块分别建立服务线程,并为每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;
各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理。
本发明的实施方式还公开了一种多核处理芯片对视频处理任务的处理系统,该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,该第一处理内核包括以下子单元:
任务建立子单元,用于为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务;
线程建立子单元,用于为每一个可编程模块分别建立服务线程;
元素注册子单元,用于为线程建立子单元所建立的每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;
任务查询子单元,用于在线程建立子单元所建立的各服务线程在空闲时按预先设定的优先级查询任务建立子单元所建立的各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理。
本发明实施方式与现有技术相比,主要区别及其效果在于:
针对HDVICP建立服务线程,主动查询需要处理的任务队列,提高了高负荷下HDVICP的使用率,并能够支持针对任务队列的优先级配置。
进一步地,根据任务类型将任务请求归类为不同的任务队列,再根据执行要素的注册顺序设置优先级,动态确定服务线程的先后执行顺序,进一步提高了高负荷下HDVICP的使用率。
进一步地,将相同类型的处理任务整合为应用程序,使得处理内容相同但是优先级不同的多个任务队列可以共用一个应用程序,方便各任务队列资源共享和管理,同时节省内存空间。
进一步地,资源通道独立于任务通道,被调用时遵循使用之前先申请、使用完后再释放的规则,使得第一处理内核上有限的资源可以得到充分利用。
附图说明
图1是本发明技术背景中对视频处理任务的处理阶段示意图;
图2是本发明第一实施方式中一种多核处理芯片对视频处理任务的处理方法的流程示意图;
图3是本发明第二实施方式中一种多核处理芯片对视频处理任务的处理方法的流程示意图;
图4是本发明第二实施方式中一种多核处理芯片对视频处理任务的处理方法的流程示意图;
图5是本发明第三实施方式中一种多核处理芯片对视频处理任务的处理系统的结构示意图;
图6是本发明第五实施方式中一种多核处理芯片对视频处理任务的处理系统的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种多核处理芯片对视频处理任务的处理方法。图2是该多核处理芯片对视频处理任务的处理方法的流程示意图。该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,具体地说,如图2所示,该多核处理芯片对视频处理任务的处理方法包括以下步骤:
在步骤201中,第一处理内核为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务。
此后进入步骤202,第一处理内核为每一个可编程模块分别建立服务线程。
此后进入步骤203,第一处理内核为每个服务线程注册多个执行要素,每个执行要素包括一个任务队列。
此后进入步骤204,各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理,此后结束本流程。
此外,第一处理内核和其他处理内核型号规格可以完全一样,也可以视具体情况的不同而定。
本发明第二实施方式涉及一种多核处理芯片对视频处理任务的处理方法。图3和图4是该多核处理芯片对视频处理任务的处理方法的流程示意图。
第二实施方式在第一实施方式的基础上进行了改进,主要改进之处在于:根据任务类型将任务请求归类为不同的任务队列,再根据执行要素的注册顺序设置优先级,动态确定服务线程的先后执行顺序,进一步提高了高负荷下HDVICP的使用率。将相同类型的处理任务整合为应用程序,使得处理内容相同但是优先级不同的多个任务队列可以共用一个应用程序,方便各任务队列资源共享和管理,同时节省内存空间。资源通道独立于任务通道,被调用时遵循使用之前先申请、使用完后再释放的规则,使得第一处理内核上有限的资源可以得到充分利用。具体地说:
上文所述的第一处理内核为每个服务线程注册多个执行要素的步骤203中,执行要素的注册顺序为任务队列处理的优先级。
任务队列根据优先级,先后依次为:主码流编码事件队列、子码流编码事件队列、移动侦测事件队列和解码事件队列。
执行要素还包括用于处理任务的可编程模块应用程序,且至少有两个任务队列对应同一个可编程模块应用程序。
此外,在本发明的其他某些实施方式中,不同的任务队列也可以只对应不同的应用程序。
上文所述的各服务线程在空闲时按预先设定的优先级查询各任务队列的步骤204中,各服务线程在空闲时按照该注册顺序查询各任务队列。
上文所述的各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理的步骤204,包括以下子步骤:
A1)初始化i=0。
A2)查询第i个执行要素中的任务队列,如果查到,则转入步骤A3),否则转入步骤A8)。
A3)判断任务命令中是否包含申请资源通道CMD_ALLOC命令或释放资源通道CMD_FREE命令,如果是,则申请或释放资源通道。
A4)判断资源通道句柄HANDLE是否有效,如果是,则转入步骤A6),否则转入步骤A5)。
A5)设置任务队列状态STATUS参数为“失败FAIL”状态,此后返回步骤A1)。
A6)执行第i个执行要素中的应用程序,将为任务命令、参数结构体和资源通道句柄HANDLE的参数进行传入,其中任务命令包括申请资源通道CMD_ALLOC命令、释放资源通道CMD_FREE命令、重新配置参数CMD_CONFIG命令和执行任务处理CMD_PROC命令。
A7)根据应用程序的返回结果将任务队列状态STATUS参数设为“失败FAIL”或“成功SUCCESS”状态,此后返回步骤A1)。
A8)使i=i+1,如果i为注册的执行要素个数,则转入步骤A9),否则返回步骤A2)。
A9)休眠预定的时长,此后返回步骤A1)。
在本发明的其他某些实施方式中,任务命令还包括进行相应任务处理的其他命令。
作为本发明的一个优选实施方式,可以预先设置休眠时长为1ms。
资源通道独立于任务通道。
建立任务队列的步骤之后,还包括以下步骤:
B1)其他处理内核设置任务命令包含申请资源通道CMD_ALLOC命令,同时将该命令的状态STATUS参数设置为“等待WAIT”状态和资源通道句柄HANDLE设置为“空NULL”,排入任务队列。
B2)若第一处理内核完成任务处理,则将申请资源通道CMD_ALLOC命令的状态STATUS参数设置为非“等待WAIT”状态。
B3)若申请资源通道CMD_ALLOC命令的资源通道句柄HANDLE仍为“空NULL”,第一处理内核任务处理时资源通道申请失败,则其他处理内核进行异常处理,否则转入步骤B4)。
B4)其他处理内核设置任务命令包含执行任务处理CMD_PROC命令,并将该执行任务处理CMD_PROC命令的状态STATUS参数设置为“等待WAIT”状态,其余参数因任务而异,排入任务队列。
B5)第一处理内核完成任务处理,则将执行任务处理CMD_PROC命令的状态STATUS参数设置为非“等待WAIT”状态,其他处理内核处理第一处理内核所返回的结果,该返回结果包含在参数中或另行约定。若任务处理未结束,则返回步骤B4)。否则转入步骤B6)。
B6)其他处理内核设置任务命令包含释放资源通道CMD_FREE命令,同时将该释放资源通道CMD_FREE命令中的状态STATUS参数设置为“WAIT”状态,排入任务队列。
B7)第一处理内核完成任务处理,则将释放资源通道CMD_FREE命令的状态STATUS参数设置为非“等待WAIT”状态。
B8)其他处理内核的任务处理结束,并等待任务重新开始,此后返回步骤B1)。
此外,其它处理内核在等待TATUS参数状态由“WAIT”转为非“WAIT”状态时,可以使用信号量机制或休眠的方式,非“WAIT”状态包括任务处理成功SECCESS和失败FAIL状态等。
作为本发明的一个优选实施例,如图3所示,针对HDVICP建立线程,具体做法如下:
为任务建立任务队列,如主码流编码队列,子码流编码队列,解码队列等,队列的入口在发起请求的处理内核上,队列的出口在VID上,队列中存放的是待处理的任务通道、处理命令以及参数指针。
为任务(或应用)建立独立的资源通道,一个资源通道保存一组参数配置和HDVICP的内存资源等信息;该资源通道独立于任务通道,如系统中可能存在32个解码通道,但是同时打开的最多只有16路,因此VID上的解码资源通道个数可以只有16个。
为每个HDVICP建立一个服务线程,该线程按照一定的优先级去查询每个任务队列,如果查到一个待处理的任务,即调用和该任务通道相对应的资源通道,并使用该HDVICP进行处理,处理完成以后进行下一次查询;如果没有查到任何待处理的任务,则该服务线程休眠一个最短的时间,然后继续查询。
作为本发明的一个优选实施例,如图4所示,从高到低分配任务队列的优先级:主码流编码事件队列、子码流编码事件队列、移动侦测事件队列和解码事件队列。
在步骤401中,空闲服务线程从最高优先级的主码流编码事件队列中查询是否有待处理的主码流编码事件。
若是,则进入步骤4011;否则进入步骤402。
在步骤402中,若最高优先级的主码流编码事件队列中没有待处理的主码流编码事件,空闲服务线程则从较高优先级的子码流编码事件队列中查询是否有待处理的子码流编码事件。
若是,则进入步骤4011;否则进入步骤403。
在步骤4011中,为需要处理的编码事件准备编码数据。
此后进入步骤4012,为需要处理的编码事件和数据调用编码库。
此后进入步骤4013,对编码结果进行处理,此后返回步骤401,空闲服务线程从最高优先级的主码流编码事件队列中查询是否有待处理的主码流编码事件。
在本实施方式中,主码流编码事件和子码流编码事件共用执行要素中的一套应用程序处理编码事件。
在步骤403中,若较高优先级的事件队列中没有待处理的事件,空闲服务线程则从移动侦测事件队列中查询是否有待处理的移动侦测事件。
若是,则进入步骤4031;否则进入步骤404。
在步骤4031中,为需要处理的移动侦测事件准备移动侦测数据。
此后进入步骤4032,为需要处理的移动侦测事件和数据调用移动侦测库。
此后进入步骤4033,对移动侦测结果进行处理,此后返回步骤401,空闲服务线程从最高优先级的主码流编码事件队列中查询是否有待处理的主码流编码事件。
在步骤404中,若主码流编码事件队列、子码流编码事件队列和移动侦测事件队列动都没有待处理的相应事件,空闲服务线程则查询解码事件队列中是否存在待处理的解码事件。
若是,则进入步骤4041;否则进入步骤405。
在步骤4041中,为需要处理的解码事件准备解码数据。
此后进入步骤4042,为需要处理的解码事件和数据调用解码库。
此后进入步骤4043,对解码结果进行处理,此后返回步骤401,空闲服务线程从最高优先级的主码流编码事件队列中查询是否有待处理的主码流编码事件。
在步骤405中,若空闲服务线程查询到所有事件队列中都没有待处理的事件,则休眠1ms,此后返回步骤401,空闲服务线程从最高优先级的主码流编码事件队列中查询是否有待处理的主码流编码事件。
在上述方案中,任务处理中的5个阶段完全是串行的,在系统负荷高时,HDVICP线程不会休眠,HDVICP的最高有效使用率取决于各阶段所占的比例,即:
HDVICP有效使用率=T3/(T1+T2+T3+T4+T5);
一般情况下T3时间段占的比例是最大的,并且T1、T2、T4和T5时间段可以通过其它优化措施进行缩减,实测D1(704*576分辨率)编码情况下HDVICP的有效使用率在95%左右,远高于常规的做法。
该方案的另一个优点是可以保证任务的优先级控制始终是有效的,即如果高优先级的队列非空,低优先级队列中的任务不会被处理。
本发明的各方法实施方式均可以以软件、硬件、固件等方式实现。不管本发明是以软件、硬件、还是固件方式实现,指令代码都可以存储在任何类型的计算机可访问的存储器中(例如永久的或者可修改的,易失性的或者非易失性的,固态的或者非固态的,固定的或者可更换的介质等等)。同样,存储器可以例如是可编程阵列逻辑(Programmable Array Logic,简称“PAL”)、随机存取存储器(Random Access Memory,简称“RAM”)、可编程只读存储器(Programmable Read Only Memory,简称“PROM”)、只读存储器(Read-Only Memory,简称“ROM”)、电可擦除可编程只读存储器(Electrically Erasable Programmable ROM,简称“EEPROM”)、磁盘、光盘、数字通用光盘(Digital Versatile Disc,简称“DVD”)等等。
本发明第三实施方式涉及一种多核处理芯片对视频处理任务的处理系统。图5是该多核处理芯片对视频处理任务的处理系统的结构示意图。该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,如图5所示,该多核处理芯片对视频处理任务的处理系统中的第一处理内核包括以下子单元:
任务建立子单元,用于为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务。
线程建立子单元,用于为每一个可编程模块分别建立服务线程。
元素注册子单元,用于为线程建立子单元所建立的每个服务线程注册多个执行要素,每个执行要素包括一个任务队列。
任务查询子单元,用于在线程建立子单元所建立的各服务线程在空闲时按预先设定的优先级查询任务建立子单元所建立的各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理。
第一实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
本发明第四实施方式涉及一种多核处理芯片对视频处理任务的处理系统。
第四实施方式在第三实施方式的基础上进行了改进,主要改进之处在于:根据任务类型将任务请求归类为不同的任务队列,再根据执行要素的注册顺序设置优先级,动态确定服务线程的先后执行顺序,进一步提高了高负荷下HDVICP的使用率。将相同类型的处理任务整合为应用程序,使得处理内容相同但是优先级不同的多个任务队列可以共用一个应用程序,方便各任务队列资源共享和管理,同时节省内存空间。具体地说:
元素注册子单元用于为每个服务线程注册多个执行要素时,执行要素的注册顺序为任务队列处理的优先级。
任务查询子单元用于在各服务线程空闲时按预先设定的优先级查询各任务队列过程中,各服务进程在空闲时,按照该注册顺序查询各任务队列。
此外,在本发明的其他某些实施方式中,不同的任务队列也可以只对应不同的应用程序。
执行要素还包括用于处理任务的可编程模块应用程序,至少有两个任务队列对应同一个可编程模块应用程序。
此外,在本发明的其他某些实施方式中,不同的任务队列也可以只对应不同的应用程序。
任务队列根据优先级,先后依次为:主码流编码事件队列、子码流编码事件队列、移动侦测事件队列和解码事件队列。
第二实施方式是与本实施方式相对应的方法实施方式,本实施方式可与第二实施方式互相配合实施。第二实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第二实施方式中。
第五实施方式涉及一种多核处理芯片对视频处理任务的处理系统,提出该系统的另一种实现方式。
如图6所示,实际上在软件角度看来,任务建立、线程建立、元素注册和任务查询等都只是过程,因此,VID上的模块单元可以这么划分:
(1)一个系统初始化子单元,用于为不同类别的任务分别建立任务队列,为每一个可编程模块分别建立服务线程,为每个服务线程注册若干组执行要素,其中,每组执行要素包括1个任务队列指针,一个应用程序指针。
(2)若干个服务线程子单元,其个数等于可编程模块的个数,用于按照注册时确定的优先级查询各任务队列,并调用相应的应用程序。
(3)若干个应用程序子单元,如编码子单元、解码子单元,用于管理相应的资源通道的申请和释放,并配置被调用时指定的可编程模块,以完成特定功能。
需要说明的是,本发明各设备实施方式中提到的各单元或模块都是逻辑单元或模块,在物理上,一个逻辑单元或模块可以是一个物理单元或模块,也可以是一个物理单元或模块的一部分,还可以以多个物理单元或模块的组合实现,这些逻辑单元或模块本身的物理实现方式并不是最重要的,这些逻辑单元或模块所实现的功能的组合是才解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明上述各设备实施方式并没有将与解决本发明所提出的技术问题关系不太密切的单元或模块引入,这并不表明上述设备实施方式并不存在其它的单元或模块。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
Claims (8)
1.一种多核处理芯片对视频处理任务的处理方法,其特征在于,该芯片包括多个用于视频处理的可编程模块,一个用于控制所述可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,所述方法包括以下步骤:
第一处理内核为不同类别的任务分别建立任务队列,供各所述其他处理内核加入待处理任务;
第一处理内核为每一个可编程模块分别建立服务线程,并为每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;
各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理;
所述为每个服务线程注册多个执行要素的步骤中,所述执行要素的注册顺序为任务队列处理的优先级;
所述各服务线程在空闲时按预先设定的优先级查询各任务队列即所述各服务线程在空闲时按照该注册顺序查询各任务队列。
2.根据权利要求1所述的多核处理芯片对视频处理任务的处理方法,其特征在于,所述执行要素还包括用于处理任务的可编程模块应用程序,且至少有两个任务队列对应同一个可编程模块应用程序。
3.根据权利要求1所述的多核处理芯片对视频处理任务的处理方法,其特征在于,所述按预先设定的优先级查询各任务队列,其查询顺序先后依次为:主码流编码事件队列、子码流编码事件队列、移动侦测事件队列和解码事件队列。
4.根据权利要求1至3中任一项所述的多核处理芯片对视频处理任务的处理方法,其特征在于,所述各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理的步骤,包括以下子步骤:
A1)初始化i=0;
A2)查询第i个执行要素中的任务队列,如果查到,则转入步骤A3),否则转入步骤A8);
A3)判断任务命令中是否包含申请资源通道命令或释放资源通道命令,如果是,则申请或释放资源通道;
A4)判断资源通道句柄是否有效,如果是,则转入步骤A6),否则转入步骤A5);
A5)设置任务队列的状态参数为“失败”状态,此后返回步骤A1);
A6)执行第i个执行要素中的应用程序,将为任务命令、参数结构体和资源通道句柄的参数进行传入,其中任务命令包括申请资源通道命令、释放资源通道命令、重新配置参数命令和执行任务处理命令;
A7)根据应用程序的返回结果将任务队列状态参数设为“失败”或“成功”状态,此后返回步骤A1);
A8)使i=i+1,如果i为注册的执行要素个数,则转入步骤A9),否则返回步骤A2);
A9)休眠预定的时长,此后返回步骤A1)。
5.根据权利要求4所述的多核处理芯片对视频处理任务的处理方法,其特征在于,所述资源通道独立于任务通道;
所述建立任务队列的步骤之后,还包括以下步骤:
B1)所述其他处理内核设置任务命令包含申请资源通道命令,同时将该命令的状态参数设置为“等待”状态和资源通道句柄设置为“空”,排入任务队列;
B2)若所述第一处理内核完成任务处理,则将所述申请资源通道命令的状态参数设置为非“等待”状态;
B3)若所述申请资源通道命令的资源通道句柄仍为“空”,所述第一处理内核任务处理时资源通道申请失败,则所述其他处理内核进行异常处理,否则转入步骤B4);
B4)所述其他处理内核设置任务命令包含执行任务处理命令,并将该执行任务处理命令的状态参数设置为“等待”状态,其余参数因任务而异,排入任务队列;
B5)所述第一处理内核完成任务处理,则将所述执行任务处理命令的状态参数设置为非“等待”状态,所述其他处理内核处理所述第一处理内核所返回的结果,若任务处理未结束,则返回步骤B4),否则转入步骤B6);
B6)所述其他处理内核设置任务命令包含释放资源通道命令,同时将该释放资源通道命令中的状态参数设置为“等待”状态,排入任务队列;
B7)所述第一处理内核完成任务处理,则将释放资源通道命令的状态参数设置为非“等待”状态;
B8)所述其他处理内核的任务处理结束,并等待任务重新开始,此后返回步骤B1)。
6.一种多核处理芯片对视频处理任务的处理系统,该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,其特征在于,所述第一处理内核包括以下子单元:
任务建立子单元,用于为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务;
线程建立子单元,用于为每一个可编程模块分别建立服务线程;
元素注册子单元,用于为所述线程建立子单元所建立的每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;
任务查询子单元,用于在所述线程建立子单元所建立的各服务线程在空闲时按预先设定的优先级查询所述任务建立子单元所建立的各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理;
所述元素注册子单元为每个服务线程注册多个执行要素时,执行要素的注册顺序为任务队列处理的优先级;
所述任务查询子单元在各服务线程空闲时按预先设定的优先级查询各任务队列过程中,各服务进程在空闲时,按照该注册顺序查询各任务队列。
7.根据权利要求6所述的多核处理芯片对视频处理任务的处理系统,其特征在于,所述执行要素还包括用于处理任务的可编程模块应用程序,且至少有两个任务队列对应同一个可编程模块应用程序。
8.根据权利要求6至7中任一项所述的多核处理芯片对视频处理任务的处理系统,其特征在于,所述任务队列根据优先级,先后依次为:主码流编码事件队列、子码流编码事件队列、移动侦测事件队列和解码事件队列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210034047.0A CN102609306B (zh) | 2012-02-15 | 2012-02-15 | 多核处理芯片对视频处理任务的处理方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210034047.0A CN102609306B (zh) | 2012-02-15 | 2012-02-15 | 多核处理芯片对视频处理任务的处理方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102609306A CN102609306A (zh) | 2012-07-25 |
CN102609306B true CN102609306B (zh) | 2014-06-18 |
Family
ID=46526700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210034047.0A Active CN102609306B (zh) | 2012-02-15 | 2012-02-15 | 多核处理芯片对视频处理任务的处理方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609306B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3208709B1 (en) * | 2014-11-10 | 2019-01-09 | Huawei Technologies Co., Ltd. | Batch processing method and device for system invocation commands |
CN108228324A (zh) * | 2016-12-21 | 2018-06-29 | 天脉聚源(北京)科技有限公司 | 一种服务器集群抢占分配任务的方法和系统 |
CN111541623B (zh) * | 2020-04-10 | 2022-12-06 | 深圳前海微众银行股份有限公司 | 一种数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853149A (zh) * | 2009-03-31 | 2010-10-06 | 张力 | 多核系统中单生产者/单消费者队列的处理方法及装置 |
CN102098503B (zh) * | 2009-12-14 | 2012-11-28 | 中兴通讯股份有限公司 | 一种多核处理器并行解码图像的方法和装置 |
-
2012
- 2012-02-15 CN CN201210034047.0A patent/CN102609306B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102609306A (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11915057B2 (en) | Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric | |
EP3776241B1 (en) | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
US8892803B2 (en) | Interrupt on/off management apparatus and method for multi-core processor | |
US7370326B2 (en) | Prerequisite-based scheduler | |
TWI416413B (zh) | Work processing device | |
CN113504985B (zh) | 一种任务处理方法以及网络设备 | |
US8417918B2 (en) | Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
CN106776395B (zh) | 一种共享集群的任务调度方法及装置 | |
CN103218329A (zh) | 数字信号处理数据传输 | |
CN107562685B (zh) | 一种基于延时补偿的多核处理器核心间数据交互的方法 | |
CN102609306B (zh) | 多核处理芯片对视频处理任务的处理方法及其系统 | |
EP2282265A1 (en) | A hardware task scheduler | |
CN101799772A (zh) | 内核调度方法、内核备份方法和多核处理器 | |
CN103970714A (zh) | 用于共享功能逻辑的设备和方法及其可重配置处理器 | |
CN115695330B (zh) | 嵌入式系统中微程的调度系统、方法、终端及存储介质 | |
US9437299B2 (en) | Systems and methods for order scope transitions using cam | |
RU2281546C1 (ru) | Способ обработки информации на основе потока данных и устройство для его осуществления | |
EP1233340A2 (en) | Context preservation | |
CN114610494A (zh) | 资源分配方法、电子设备及计算机可读存储介质 | |
WO2021179222A1 (zh) | 一种调度装置、调度方法、加速系统及无人机 | |
US11372649B2 (en) | Flow control for multi-threaded access to contentious resource(s) | |
JP4017005B2 (ja) | 演算装置 | |
US10503541B2 (en) | System and method for handling dependencies in dynamic thread spawning for a multi-threading processor | |
CN114356586B (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 |